因此,假設我在列表A中有200個數值的列表。我想創建一個列表B,它將列表A分成4個簇,所以我會得到50個集羣。在列表BI想爲4個值的每個集羣的列表,所以它會包含在列表B. 50名名單Python,打印一個列表並不給我輸出我想
我會用我的源解釋我的問題:
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
當我運行這個,我希望它打印列表中的serials.txt,包含50個分裂50名單。但是當我運行它時,它會打印出[2,6,7,8]五十次。這是最後一個集羣。所以我猜這個問題是在位於第39行的地方。 我已經試着在第41行看看分配給FinishedList的值是什麼,它每次都是正確的值(所以不是2,6,7,9,就像列表打印出來)。我已經重新檢查了x和y迭代器(是的,我知道它是拼寫迭代器),它們也是正確的。
那麼我的代碼中出現了什麼問題,使它最後一次打印五十次呢? 我使用Python 2.7的方式,如果你不知道。
在此先感謝!
就像一個筆記:請看看[Python的命名約定](http://www.python.org/dev/peps/pep-0008/#prescriptive-naming-conventions)。你的代碼傷害了我的眼睛。 :( – pemistahl
真的,雖然你可以用'with'和'split()'來完成5行代碼的整個操作。 –