list1 = [2,4,6,8,3,4,2,]
從上面的串列中,我需要獲得以下結果
[2,4,6,8]
這是我嘗試的方式。但它導致了一個錯誤而沒有給出預期的結果。
list1 = [2,4,6,8,3,4,2,]
x=[]
for num in list1:
if (num % 2 == 0) and (num not in list1):
x.append(num)
print(x)
所以我需要你的幫助才能只選擇一次偶數而不重復相同的數字提前謝謝......!
uj5u.com熱心網友回復:
我對您的代碼進行了少量修改,只需申請set()僅獲取唯一值,并將list()其轉換為串列,并按sorted()升序獲取值
list1 = [2,4,6,8,3,4,2,1]
x=[]
for num in list1:
if (num % 2 == 0):
x.append(num)
print(sorted(list(set(x))))
輸出
[2, 4, 6, 8]
編輯:如果您需要結果以與原始串列相同的順序出現,則需要指定第二個條件,不再(num not in x)需要使用set()
list1 = [4,2,8,3,6,5]
x=[]
for num in list1:
if (num % 2 == 0) and (num not in x):
x.append(num)
print(sorted(list(set(x))))
print(list(set(x)))
print(set(x))
print(x) #this is the output you're looking for
輸出
[2, 4, 6, 8]
[8, 2, 4, 6]
{8, 2, 4, 6}
[4, 2, 8, 6]
uj5u.com熱心網友回復:
如果您想繼續使用相同的邏輯,您可以更新if條件:
list1 = [2,4,6,8,3,4,2,]
x=[]
for num in list1:
if (num % 2 == 0) and (num not in x):
x.append(num)
print(x)
其他解決方案可能正在使用list comprehensionand set:
list1 = [2,4,6,8,3,4,2,]
l_set = set(list1)
nums = [val for val in l_set if val%2 == 0]
print(nums)
uj5u.com熱心網友回復:
您可以將數字存盤x為set資料型別,以防止重復,而不是 list
list1 = [2,4,6,8,3,4,2]
x=set()
for num in list1:
if (num % 2 == 0):
x.add(num)
print(list(x))
或者,如果您想尊重輸入的順序,您可以擁有 1 個集合和 1 個串列。set ( x_set) 用于有效檢查一個數字是否已經在串列中,而 list ( x_output) 用于存盤輸出
list1 = [2,4,6,8,3,4,2]
x_set=set()
x_output = []
for num in list1:
if (num % 2 == 0) and (num not in x_set):
x_set.add(num)
x_output.append(num)
print(x_output)
uj5u.com熱心網友回復:
使用串列理解,一行就足夠了。首先遍歷串列并測驗偶數。然后在集合中轉換以消除重復。回傳串列后:
list({x for x in list1 if x % 2 <= 0})
輸出:[8,2,4,6]
在注釋和澄清之后,另一個代碼就足夠了:
[list1[x] for x in [0] if list1[x] % 2 <= 0] [list1[i] for i in range(len(list1)) if list1[i] % 2 <= 0 and list1[i] not in list1[0: i - 1]]
輸出:[2、4、6、8]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/479545.html
