2017-02-26 95 views
-3

所以我有這樣的:是否有可能進行排序的「在」 -loop(Python)的列表

Channel.groups.sort() # Channel.groups is a list of strings 

for country in Channel.groups: 
    print(country) 

但我願做這樣的事情:

for country in Channel.groups.sort(): 
     print(country) 

# This results in error: TypeError: 'NoneType' object is not iterable 

是否有可能以某種方式強制Channel.groups.sort()在開始遍歷列表之前「執行」?

+0

什麼是你想在這裏完成?你只是想減少代碼行數? – GarethPW

+0

'sort'排序(修改'Channel.groups')並返回'None'。使用'sorted'代替;即'對於國家在排序(Channel.groups):...' – jDo

+0

@ MSeifert只是一個常規數組。 – Fredrik

回答

0

sort()是就地,意思是它修改了它被調用的原始列表並返回None(這就是爲什麼你會得到錯誤'NoneType' object is not iterable)。

您將需要使用的東西,離開了原來的清單完整,並返回一個新的,排序列表,像sorted()

for country in sorted(Channel.groups)

+1

不知道爲什麼它會被低估。 AFAICT,它很好地回答了這個問題。你可能會提到'sorted(Channel.groups)'在循環之前執行,這可能對Python noobie來說並不明顯。 –

+0

我沒有投票,但我剛剛意識到OP已經跳到了'TypeError'的結論,因爲'sort()'在第二個例子中的for循環之前沒有執行。也許你可以直接在你的答案中解決XY問題。 – jDo

+0

@DeepSpace這很好地解釋了爲什麼我得到了錯誤以及如何解決我的問題。 – Fredrik

相關問題