我有一個整數列表(這些列表不是真正的整數,這只是爲了簡單的問題),我想過濾正數和負數那些(兩份名單引起我的興趣)在給出條件的兩個列表中分開一個列表
我的解決方案:
main_list = [50,-354,10,34,-56,10]
negatives = list(filter(lambda x : x < 0,main_list))
positives = list(filter(lambda x : x >= 0,main_list))
的作品,但執行2個filter
操作
for i in main_list:
if i < 0:
negatives.append(i)
else:
positives.append(i)
作品,但不是很Python的。
創建集合並從主列表中減去正項不是一個選項,因爲它使用不必要的散列。
那麼有沒有更好的方法來做到這一點? (單行大加讚賞)
編輯:我發現onelining它沒有太多的測試
for i in main_list: (negatives if i < 0 else positives).append(i)
如何名單的大是它充分利用?你能分類嗎?總結一下? – MooingRawr
爲什麼你認爲第二個例子確切地不是Pythonic? –
@JonClements我個人認爲它看起來非常像任何其他語言。但它確實具有可迭代性,不過我曾經討論過的最常見的人也認爲Python主要是Magic One Liners。 – MooingRawr