我最近拿起Python並且正在處理列表的過程。我正在使用一個測試文件,其中包含由選項卡縮進的幾行字符,然後將其傳遞到我的python程序中。 我的Python腳本的目的是將每行插入到列表中,使用長度作爲索引,這意味着列表將自動排序。我正在考慮最基本的案例,不關心任何複雜的案例。
我的python代碼如下;
newList = []
for line in sys.stdin:
data = line.strip().split('\t')
size = len(data)
newList.insert(size, data)
for i in range(len(newList)):
print (newList[i])
我的「測試」文件在下面;
2 2 2 2
1
3 2
2 3 3 3 3
3 3 3
我對python腳本輸出的期望是按以下順序打印列表內容:按長度排序;
['1']
['3', '2']
['3', '3', '3']
['2', '2', '2', '2']
['2', '3', '3', '3', '3']
但是,當我將測試文件傳遞給我的python腳本時,我得到以下內容;
cat test | ./listSort.py
['2', '2', '2', '2']
['1']
['3', '2']
['3', '3', '3']
['2', '3', '3', '3', '3']
輸出['2','2','2','2']的第一行不正確。我試圖弄清楚爲什麼它沒有被打印在第四行(因爲長度爲4,這意味着它將被插入到列表的第四個索引中)。有人可以提供一些見解,爲什麼這是?我的理解是,我將'數據'作爲索引插入到列表中,這意味着當我打印出列表的內容時,它們將按照排序順序打印。
在此先感謝!
嘗試重播使用筆的算法&紙張,你會明白爲什麼結果是錯誤的。 – mkrieger1
還要注意「無用的貓」:'cat filename |程序「與」程序<文件名「相同。 – mkrieger1
或者如果你對列表的理解是錯誤的,那麼使用筆和紙可能不會幫助你......如果你有一個長度列表* N *然後插入索引* n *> * N *將只是將它附加到列表的末尾。例如。在索引「4」處插入'x'到空列表(* N * = 0)中仍然會導致列表'[x]',而不是像[[ - , - , - , - ,x]'。 – mkrieger1