在 python 列表中只选择一次偶数而不重复相同的数字
selecting out even number only once without repeating the same number in python list
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)
所以我需要你的帮助来只选择一次偶数而不重复相同的数字
提前致谢...!
您可以将 x
中的数字存储为 set 数据类型,以防止重复,而不是列表
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 个列表。集合(x_set
)用于高效检查列表中是否已经存在一个数字,列表(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)
我对您的代码进行了细微修改,只需应用 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]
有了列表理解,一行就够了。首先遍历列表并测试偶数。然后在集合中转换以消除重复项。 return 后列出:
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]
如果你想继续相同的逻辑,你可以更新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 comprehension
和 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)
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)
所以我需要你的帮助来只选择一次偶数而不重复相同的数字 提前致谢...!
您可以将 x
中的数字存储为 set 数据类型,以防止重复,而不是列表
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 个列表。集合(x_set
)用于高效检查列表中是否已经存在一个数字,列表(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)
我对您的代码进行了细微修改,只需应用 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]
有了列表理解,一行就够了。首先遍历列表并测试偶数。然后在集合中转换以消除重复项。 return 后列出:
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]
如果你想继续相同的逻辑,你可以更新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 comprehension
和 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)