如何将列表中的字符串转换为list,to from[[list1],[list2]…[listm]]

2024-09-25 00:27:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些数据,比如: ['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()

Tags: intargetforlenobjectmainrangegenerator
3条回答

当你在括号内有一个理解(比如int(x) for x in ...)时,它被解释为一个生成器,它是一种特殊类型的对象,然后可以迭代生成一个列表。您看到的疯狂输出是因为您实际上创建了一个生成器列表,而不是一个列表列表。要将理解理解理解为列表而不是生成器,只需将它们放在方括号中:

for i in range(len(mainText)):
    target_list.append([int(x) for x in mainText[i].split(',')])

实现我认为您想要的目标的简单方法如下:

mainText = ['6005,280', '6005,2751', '6005,260']
target_list = [elem.split(',') for elem in mainText]

列表理解应该起作用:

[x.split(',') for x in mainText]

相关问题 更多 >