我有一个列表列表,我想按10分组

时间:2017-09-11 12:43:20

标签: python list nested-lists

我有一个原始文本文件,其中包含以行分隔的EAN编号列表,我将其添加到列表(作为字符串),如下所示:

listofEAN = []
with open('Data', newline='\r\n') as inputfile:
    for row in csv.reader(inputfile):
        listofEAN.append(row)

这会创建一个“列表列表”(我不确定它为什么不创建单个列表?),格式为:

[['0075678660924'], ['0093624912613'], ['3299039990322'], ['0190295790394'], ['0075678660627'], ['0075678661150'], ...]

我正在尝试将列表转换为列表,每个列表包含10个EAN。因此,运行listofEAN[0]将返回前10个EAN,依此类推。

我担心我正在努力做到这一点 - 我认为我需要使用某种循环,但是我在创建循环并将循环操作与列表语法相结合时遇到了麻烦。

任何指针都会非常感激。

编辑:与此处的查询类似:How do you split a list into evenly sized chunks?但此处对我导入列表的方式的更正特别重要。谢谢!

1 个答案:

答案 0 :(得分:1)

CSV文件中的row始终是一个列表,即使对于只有一列的文件也是如此。当你每行只有一个值时,你真的不需要使用CSV阅读器;只需从每一行中删除空格以创建一个平面列表,并使用标准的通用换行支持:

with open('Data') as inputfile:
    # create a list of non-empty lines, with whitespace removed
    stripped = (line.strip() for line in inputfile)
    listofEAN = [line for line in stripped if line]

现在将它变成groups of a fixed size

是微不足道的
per_ten = [listofEAN[i:i + 10] for i in range(0, len(listofEAN), 10)]