所以我試圖讓我的代碼回傳串列,所有偶數在前面,奇數附加在串列的末尾。到目前為止,這是我的代碼...
s = [1,2,3,4,5,5]
def evenorodd(s):
s = list(s)
for i in range(len(s)-1):
if s[i]%2 != 0:
s.append(i)
return s
print(evenorodd(s = [1,2,3,4,5,5]))
這是我得到的輸出
[1, 2, 3, 4, 5, 5, 0, 2, 4]
但我希望我的輸出是
[0,2,2,4,4,1,3,5,5]
我應該做哪些改變
順序并不重要 btw .. 只是所有偶數必須在奇數之前
uj5u.com熱心網友回復:
您可以在函式中創建兩個新串列,一個用于偶數,一個用于奇數。將每個數字附加到回圈內的正確串列中。完成后將串列連接在一起并回傳。
uj5u.com熱心網友回復:
您可以使用sorted為串列創建自定義排序方法
s = [1,2,3,4,5,5,0,2]
s = sorted(s, key=lambda x: not x%2)
>>> [1, 3, 5, 5, 2, 4, 0, 2]
如果你想用自己和奇數對偶數進行排序
s = [1,2,3,4,5,5,0,2]
s.sort()
s = sorted(s, key=lambda x: not x%2)
>>> [1, 3, 5, 5, 0, 2, 2, 4]
uj5u.com熱心網友回復:
您可以附加到兩個串列并將它們連接起來:
def evenorodd(s):
evens = []
odds = []
for num in s:
if num%2 == 0:
evens.append(num)
else:
odds.append(num)
return evens odds
uj5u.com熱心網友回復:
這樣做怎么樣:
s = [1,2,3,4,5,5]
print([x for x in s if not x % 2] [x for x in s if x % 2])
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/360853.html
上一篇:列印沒有索引的串列的最新元素
