使用具有两个for循环的列表推导从两个列表中选择元素

时间:2018-04-16 04:21:24

标签: python

我有以下作业问题:

创建一个列表理解,它使用I和R的元素,并仅选择I和R中非负的整数的元素。 注意:为此,您应该使用两个for循环。

解释

I = [-1, 0, 1, 2]
R = [2.7818, 0.0, -3.14159]

所需输出

[0, 1, 2]

谢谢,

考特尼

聚苯乙烯。我能想到回答这个问题的唯一方法就是将两个列表分成如下:

NonNeg = [i for I in I + R if(i> = 0 and isinstance(i,int))]

2 个答案:

答案 0 :(得分:0)

我找到了另一个解决这个问题的方法。答案不具有推广性,但符合教授为我们设定的学习目标:如何在列表推导中使用嵌套for循环。

  

由于列表R中只有一个值大于0,因此   列表推导的第一次迭代的结果是唯一的结果   返回

numbers = [(i,r) for i in I for r in R if(r>0)]
result: [(-1, 2.7818), (0, 2.7818), (1, 2.7818), (2, 2.7818)]
  

对于列表i中的每个元组,对于元组返回中的每个元素j   大于零的元素和一个整数

NonNeg = [j for i in numbers for j in i if(j >= 0 and j%1==0)]
result:[0, 1, 2]
  

更普遍的解决方案是我最初发布的内容:   
  NonNeg2 = [i for i in I+R if(i >= 0 and isinstance(i,int))]
  结果:[0,1,2]

答案 1 :(得分:-1)

list1 = [1, 2, 3]
list2 = [2.0, 4, 10.5]
d = [x for x in list1+list2 if isinstance(x,int)]
print(d)

说明:

使用+运算符

组合列表