a = [0,1,2,3,4,5,6,7,8,9]
b = [9,8,7,6,5,4,3,2,1,0]
c = zip(a,b)
c = list(c) # Python 3 zip 回傳迭代器,需轉列表
a = c.sort(key=lambda x: x[1])
print(a) # 輸出 None
list.sort() 是 原地排序,回傳值為 None,並不會回傳排序後的列表。變數 a 接收到的是 None,而原列表 c 已被排序。
c.sort(key=lambda x: x[1])
print(c) # 輸出已排序的列表
a = sorted(c, key=lambda x: x[1])
print(a) # 輸出新排序列表,c 保持原序
zip() 直接回傳列表,可直接 .sort()。zip() 回傳迭代器,必須先 list(zip(...)) 再排序。習慣使用 sorted() 產生新列表,避免副作用;若確定不需要原序列,再用 .sort() 節省記憶體。