如果在此列出此列表:
[25, 8, 22, 9]
如何让程序创建2个单独的列表,并将它们打印出来?一个应包含少于20的所有数字,另一个应包含所有大于20的数字。最终的打印结果应如下所示:[8, 9]
,[25, 22]
答案 0 :(得分:5)
>>> predicates = lambda x:x<20, lambda x:x>20
>>> print [filter(pred, [25, 8, 22, 9]) for pred in predicates]
[[8, 9], [25, 22]]
答案 1 :(得分:4)
>>> L = [25, 8, 22, 9]
>>> [x for x in L if x < 20]
[8, 9]
>>> [x for x in L if x > 20]
[25, 22]
答案 2 :(得分:1)
a = [25, 8, 22, 9]
print [x for x in a if x > 20]
print [x for x in a if x < 20]
您在此处使用列表推导。列表理解看起来像:
[ f(x) for x in a if cond(x) ]
这意味着:为f(x)
x
cond(x)
的{{1}}的每个元素生成一个由True
组成的列表。
在我们的案例中,f(x)
只是x
。 cond(x)
为x > 20
或x < 20
(另请注意,如果您的列表中有20个,则会从结果中消失。)
如果是家庭作业,你可以用更低级的方式解决问题:
a = [25, 8, 22, 9]
list1 = []
list2 = []
for elem in a:
if elem > 20:
list1.append(elem)
if elem < 20:
list2.append(elem)
print list1
print list2
在这里,您遍历列表并检查其元素。 您附加到一个列表的大于20的元素;那个比那个更小 - 到另一个。
答案 3 :(得分:1)
注意:假设你想要二十二个列表
listOne = [x for x in yourList if x < 20]
listTwo = [x for x in yourList if x >= 20]
print listOne
print listTwo
虽然您应该使用list comprehensions,但如果您从python开始,可能会对for循环方法感兴趣
listOne = []
listOne = []
for x in yourList:
if x < 20:
listOne.append(x)
else:
listTwo.append(x)
答案 4 :(得分:1)
def print_split_list(raw_list, split_value):
lower_list = [v for v in raw_list if v < split_value]
upper_list = [v for v in raw_list if v >= split_value]
print lower_list, upper_list
print_split_list([25, 8, 22, 9], 20) # => [8, 9] [25, 22]
答案 5 :(得分:-2)
li = [25, 8, 22, 9]
li.sort()
for i, x in enumerate(li):
if x > 20:
print li[:i]
print li[i:]
break