我有一个列表列表,我想按 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)]
我有一个原始文本文件,其中包含以行分隔的 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)]