【问题标题】:Function to convert to csv form and convert it to 2-dimensional list form in python转换为csv形式并在python中将其转换为二维列表形式的函数
【发布时间】:2019-03-30 14:31:28
【问题描述】:

我想做

输入:

x: 1,2,3
y: 4,5,6

输出:

xy: [[1,4],[2,5],[3,6]]

使用函数parse_list(str_x, str_y)

我是编程初学者...请帮助我。

def parse_list(str_x, str_y):
    list_x = str_x.split(',')
    list_y = str_y.split(',')
    xy=[]
    for i in range(len(list_x)):
        xy[i][0]=list_x[i]
        xy[i][1]=list_y[i]
    str_x = input('x: ')
    str_y = input('y: ')
    parse_list(str_x, str_y)

不行,请告诉我更好的方法。

【问题讨论】:

  • 什么不起作用?错误是什么?您应该为您的问题添加更多信息。
  • 我想你在找zip(str_x,str_y)
  • xyCSV 中的两行吗?它们是 3 列还是 1 个字符串列
  • 格式和语法改进,调整语气。

标签: python arraylist


【解决方案1】:

您可能得到一个IndexError,因为当您尝试使用xy[i][0]=list_x[i] 访问其元素时,该列表为空。您应该在访问之前将元素添加到列表中(例如使用.append())。


如果你想用字符串元素保留结果列表,那么这应该可以:

def parse_list(str_x, str_y):
    return list(
        zip(str_x.split(','), str_y.split(',')))

如果你想将所有元素都转换为int,那么你可以试试这个:

def parse_list(str_x, str_y):
    xy = []
    for x, y in zip(str_x.split(','), str_y.split(',')):
        # careful: this may raise 'ValueError' if its not a valid 'int'
        xy.append([int(x), int(y)])

    return xy

【讨论】:

    【解决方案2】:

    可以用逗号分割字符串,将项目映射成整数,zip这两个列表:

    def parse_list(str_x, str_y):
        return list(zip(map(int, str_x.split(',')), map(int, str_y.split(','))))
    

    这会返回一个元组列表。如果您希望它返回一个列表列表,您可以将zip 生成的元组映射到列表:

    def parse_list(str_x, str_y):
        return list(map(list, zip(map(int, str_x.split(',')), map(int, str_y.split(',')))))
    

    【讨论】:

      猜你喜欢
      • 2020-09-18
      • 2021-12-18
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多