列表我必須使用一個向後循環:迭代通過不同長度
for i in range(len(my_ls))[::-1]:
print i
但是一些清單的具有length = 1
(如在['one']
)。
結果解釋器根本沒有打印任何東西。
儘管如此,在python自己的shell中,它可以正常工作,並且按照計劃打印0。
任何想法如何克服這個問題?
我在Debian Squeeze上運行Python 2.6.6。
列表我必須使用一個向後循環:迭代通過不同長度
for i in range(len(my_ls))[::-1]:
print i
但是一些清單的具有length = 1
(如在['one']
)。
結果解釋器根本沒有打印任何東西。
儘管如此,在python自己的shell中,它可以正常工作,並且按照計劃打印0。
任何想法如何克服這個問題?
我在Debian Squeeze上運行Python 2.6.6。
難道你不只是通過列表reversed()
[docs],然後迭代結果反向迭代器?
for x in reversed(lst):
print x
NB'reverse'突變列表。 – Joe
'因爲我在逆轉(my_ls)'得到了這個(反正是更好的風格)。 –
非常抱歉,夥計們!我在同一頁面上忘記了'if len(my_ls)> 1'。應該早點睡覺了。 :) –
這是你想要實現的嗎?
>>> li = ['one']
>>> for i in range(len(li)-1, -1, -1):
... print li[i]
...
one
編輯:我的答案和Acorn的一個之間的不同之處在於:
.reverse()
]代替reversed()
將創建一個迭代器對象上修改了列表使用.reverse()
或reversed()
在python中比較習慣。但range
參數在那裏給你這種可能性(記憶方面,我不知道我的方法是否比reversed()
有任何優勢!)。
HTH!
非常抱歉,夥計們!我在同一頁面上忘記了'if len(my_ls)> 1'。應該早點睡覺了。:) –
@paul_k - 不知道你的意思,但我在答案中提到的任何方法都可以工作,不管列表中的項目數量是多少... – mac
當然,現在一切正常。我用'reversed()'。我只是使用這個'if'語句並切斷了所有的單項清單。這就是爲什麼在這種情況下沒有印刷。 –
首先,打印出的所有內容都是距離範圍末端的每個項目的偏移量,而不是列表中的項目。
該範圍看起來像你正試圖用Python寫C語言,對我來說。
你需要的是這樣的:
>>> l = ['one']
>>> for each in l[-1::-1]:
>>> print each
...
one
>>> l.append('two')
>>> for each in l[-1::-1]:
>>> print each
...
two
one
建設從列表到列表的開始結束for each in l[-1::-1]
迭代,無論列表大小的和無range
尷尬的參與。
你的意思是它在python shell中工作,但不能從腳本中工作? – favoretti
這很奇怪。發佈整個示例代碼,包括明確的測試數據 – Joe