2013-03-12 114 views
0

假設S是一個迭代器,其中每個子元素不一定是排序的。通常,我可能會做如何通過Python中的已排序迭代進行迭代

for element in S: 
    element=sorted(element) 
    ... 

有沒有辦法做這樣的事情

for sorted(element) in S: 
    ... 
+1

所以...你有什麼問題嗎? – xxmbabanexx 2013-03-12 01:10:01

+0

你有沒有試過自己的代碼? – 2013-03-12 01:13:03

回答

5

可以使用genexp,但你原來的代碼已經足夠好:

for element in (sorted(x) for x in S): 
    # do things 

另一種方法使用較少的代碼是map

for element in map(sorted, S): 
    # or itertools.imap on Python2.x if you need iterators... 
+0

我認爲這是最好的選擇,但問題中的明確版本可能更加清晰。我唯一的建議是通過在聲明的不同部分不重複使用同一個名稱'element'來避免混淆。 – Blckknght 2013-03-12 01:14:36

1

如果你試圖返回一個列表,你可以做一個列表理解

[sorted(element) for element in S]