将列表中的值偶数放入集合中
Even values from lists into a set
这是给定的作业+代码:
Write a function even_value_set(list1, list2, list3)
, which receives
three lists containing integer items as arguments. The function
creates and returns a set that contains all items with even value from
all three lists.
def test():
l = [[],[],[]]
for i in range(3):
for j in range(random.randint(7,14)):
l[i].append(random.randint(1,35))
print ("List" + str(i + 1) +":",l[i])
print ("")
s = even_value_set(l[0],l[1],l[2])
print ("Return type:", str(type(s)).replace("<","").replace(">",""))
print ("Set with even values only:", end = "")
print (set(sorted(list(s))))
test()
import random
我尝试使用 .union() 并将列表添加到另一个列表中,然后再将它们变成集合,但没有成功。
您可以使用 +
来合并列表,例如 list1 + list2
。然后遍历结果列表检查数字是否为偶数并添加到另一个列表中。
def even_value_set(list):
result = set()
for val in list:
if val%2 == 0:
result.add(val)
return result
def test():
l = [[],[],[]]
for i in range(3):
for j in range(random.randint(7,14)):
l[i].append(random.randint(1,35))
print ("List" + str(i + 1) +":",l[i])
print ("")
uni = l[0] + l[1] + l[2]
s = even_value_set(uni)
print ("Return type:", str(type(s)).replace("<","").replace(">",""))
print ("Set with even values only:", end = "")
print (set(sorted(list(s))))
test()
import random
是你想要的吗?我认为你的问题令人困惑。
您可以使用 + 操作合并列表(包含重复项)。
union_list = list1 + list2 + list3
如果您只想要唯一值,您可以在此列表中调用 set。
unique_set = set(union_list)
现在您可以创建一个新的空集并迭代 unqiue_set 并添加所有偶数值:
solution = set()
for v in unique_set:
if v%2==0:
solution.add(v)
您可以用一种简单的 Pythonic 方式来做到这一点。这个函数可以使用 comprehension
写成一个简单的单行代码
def even_value_set(list1, list2, list3):
return set([num for num in list1+list2+list3 if num % 2 == 0])
基本上,我们在这里所做的是连接所有列表,过滤偶数,然后将其制成一个集合。
def even_value_set(*lsts):
s = set()
for lst in lsts:
s |= {x for x in lst if x % 2 == 0}
return s
您也可以使用加星标
def even_value_set(*lsts):
return set().union(*[{x for x in lst if x % 2 == 0} for lst in lsts])
和连接解决方案(更多内存)。
集合理解比 set()
更有效
def even_value_set(l1, l2, l3):
return {x for x in l1+l2+l3 if x % 2 == 0}
这是给定的作业+代码:
Write a function
even_value_set(list1, list2, list3)
, which receives three lists containing integer items as arguments. The function creates and returns a set that contains all items with even value from all three lists.
def test():
l = [[],[],[]]
for i in range(3):
for j in range(random.randint(7,14)):
l[i].append(random.randint(1,35))
print ("List" + str(i + 1) +":",l[i])
print ("")
s = even_value_set(l[0],l[1],l[2])
print ("Return type:", str(type(s)).replace("<","").replace(">",""))
print ("Set with even values only:", end = "")
print (set(sorted(list(s))))
test()
import random
我尝试使用 .union() 并将列表添加到另一个列表中,然后再将它们变成集合,但没有成功。
您可以使用 +
来合并列表,例如 list1 + list2
。然后遍历结果列表检查数字是否为偶数并添加到另一个列表中。
def even_value_set(list):
result = set()
for val in list:
if val%2 == 0:
result.add(val)
return result
def test():
l = [[],[],[]]
for i in range(3):
for j in range(random.randint(7,14)):
l[i].append(random.randint(1,35))
print ("List" + str(i + 1) +":",l[i])
print ("")
uni = l[0] + l[1] + l[2]
s = even_value_set(uni)
print ("Return type:", str(type(s)).replace("<","").replace(">",""))
print ("Set with even values only:", end = "")
print (set(sorted(list(s))))
test()
import random
是你想要的吗?我认为你的问题令人困惑。
您可以使用 + 操作合并列表(包含重复项)。
union_list = list1 + list2 + list3
如果您只想要唯一值,您可以在此列表中调用 set。
unique_set = set(union_list)
现在您可以创建一个新的空集并迭代 unqiue_set 并添加所有偶数值:
solution = set()
for v in unique_set:
if v%2==0:
solution.add(v)
您可以用一种简单的 Pythonic 方式来做到这一点。这个函数可以使用 comprehension
写成一个简单的单行代码def even_value_set(list1, list2, list3):
return set([num for num in list1+list2+list3 if num % 2 == 0])
基本上,我们在这里所做的是连接所有列表,过滤偶数,然后将其制成一个集合。
def even_value_set(*lsts):
s = set()
for lst in lsts:
s |= {x for x in lst if x % 2 == 0}
return s
您也可以使用加星标
def even_value_set(*lsts):
return set().union(*[{x for x in lst if x % 2 == 0} for lst in lsts])
和连接解决方案(更多内存)。
集合理解比 set()
def even_value_set(l1, l2, l3):
return {x for x in l1+l2+l3 if x % 2 == 0}