因此,假设我在列表 A 中有一个包含 200 个数值的列表。我想创建一个列表 B,将列表 A 分成 4 个集群,所以我会得到 50 个集群。在列表 BI 中,希望为每个包含 4 个值的集群创建一个列表,因此列表 B 中将包含 50 个列表。
我将使用我的来源解释我的问题:
from pprint import pprint
FileValuelist = []
def DetermineClusterNumber(File): #determine digits in a cluster
Lines = open(File, "r")
i = 0 # used for iterating through the lines
FirstLine = Lines.readline()
for char in FirstLine: # read through first line, till hyphen.
if char != "-":
i += 1
elif char == "-":
return i # Return number of digits in the cluster
def ReadLines(File, Cluster_Number):
Lines = open( File, "r" )
for Line in Lines:
for char in Line:
if char != "-":
FileValuelist.append(char)
def RemoveNewlines(Rawlist):
for x in range(len(FileValuelist)-9):
if FileValuelist[x] == "\n":
FileValuelist.remove(FileValuelist[x])
if FileValuelist[x] == "\r":
FileValuelist.remove(FileValuelist[x])
Cluster_Number = DetermineClusterNumber("Serials.txt") # Amount of chars in a cluster. Example: 1234-2344-2345. clusternumber = 4
ReadLines ("Serials.txt", Cluster_Number)
RemoveNewlines(FileValuelist)
list_iterater = 0
FinishedList = ([[None]*(Cluster_Number)])*((len(FileValuelist)))
amount_of_clusters = len(FileValuelist)/Cluster_Number
for x in range(0, amount_of_clusters):
for y in range(0, Cluster_Number):
FinishedList[x][y] = FileValuelist[list_iterater]
list_iterater += 1
pprint(FinishedList)
使用 serials.txt 包含:
4758-8345-1970-4486-2348
2346-1233-3463-7856-4572
6546-6874-1389-9842-4185
9896-4688-4689-6455-4712
9541-5621-8414-7465-5741
4545-9959-5632-6845-1351
5643-2435-5854-6754-8749
7892-3457-8923-4572-5397
5623-5698-5468-5476-9874
8762-3487-6123-7861-2679
当我运行它时,我希望它在一个包含 50 个拆分 50 个列表的列表中打印 serials.txt。但是,当我运行它时,它会打印出 [2,6,7,8] 五十次。那是最后一个集群。所以我猜问题出在第 39 行的某个地方。我已经尝试查看在第 41 行为 FinishedList 分配了什么值,并且每次都是正确的值(所以不是 2、6、7、9,就像列表是打印出来)。我已经重新检查了 x 和 y 迭代器(是的,我知道它是拼写迭代器),它们也是正确的。
那么我的代码有什么问题使它打印最后一个集群五十次?顺便说一句,如果你不知道,我正在使用 Python 2.7。
提前致谢!