我有以下作业问题:
创建一个列表理解,它使用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))]
答案 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)
说明:
使用+
运算符