我有一些数据,比如: ['6005280'、'60052751'、'6005260']
我想把它们转换成一个列表,比如: [['6005','280'],['6005','2751'],['6005','260']]
我用
for i in range(len(mainText)):
target_list.append(int(x) for x in mainText[i].split(','))
但是得到了一些疯狂的结果,比如:
[<generator object main.<locals>.<genexpr> at 0x000000DA61784C78>, <generator object main.<locals>.<genexpr> at 0x000000DA61784B10>, <generator object main.<locals>.<genexpr> at 0x000000DA61784CF0>]
那么正确的方法是什么呢
代码:
import csv
def main():
inputfile=open('price.csv','r')
mainText=mainPart(inputfile)
## print(mainText)
target_list=[]
for i in range(len(mainText)):
target_list.append(int(x) for x in mainText[i].split(','))
print(target_list)
def mainPart(file):
## import items with first row
rowsWithEnter1=[row for row in file]
## del first row
rowsWithEnter2=rowsWithEnter1[1:]
rows=[]
for i in range(len(rowsWithEnter2)):
rows.append(rowsWithEnter2[i].strip('\n'))
return rows
main()
当你在括号内有一个理解(比如
int(x) for x in ...
)时,它被解释为一个生成器,它是一种特殊类型的对象,然后可以迭代生成一个列表。您看到的疯狂输出是因为您实际上创建了一个生成器列表,而不是一个列表列表。要将理解理解理解为列表而不是生成器,只需将它们放在方括号中:实现我认为您想要的目标的简单方法如下:
列表理解应该起作用:
相关问题 更多 >
编程相关推荐