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

I have a list of lists, I want to group by 10

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

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

这会创建一个 "list of lists"(我不确定为什么它不创建单个列表?),格式如下:

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

我正在尝试将列表转换为每个列表包含 10 个 EAN 的列表。所以 运行 listofEAN[0] 会 return 前 10 个 EAN,依此类推。

恐怕我很难做到这一点 - 我想我需要使用某种循环,但我在创建循环并将循环操作与列表语法相结合时遇到了问题。

任何指点将不胜感激。

编辑:与这里的查询类似:How do you split a list into evenly sized chunks? 但这里对我导入列表的方式的更正特别令人感兴趣。谢谢!

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

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)]