【发布时间】:2018-10-29 21:36:12
【问题描述】:
我有以下数字列表:
List = [1, 2, 3, 4, 5, 6, 15]
我想要那些是 n 倍数的数字的索引,所以我这样做了:
def indexes(List, n):
# to enumerate the numbers
E = enumerate(List)
# filtering tuples
F = list(filter(lambda x: x[1] % n == 0, E))
return [ i[0] for i in F]
indexes(List, 2)
[1, 3, 5]
没关系,但是当我添加变量 m 时会发生什么?
def Index( L, n, m):
# enumeration
E = enumerate(L)
# filtering tuples
F_n = list(filter(lambda x: x[1]%n == 0, E))
F_m = list(filter(lambda x: x[1]%m == 0, E))
L_n = [ l[0] for l in F_n]
L_m = [ J[0] for J in F_m]
return L_n + L_m
>>>Index(List, 2, 5):
[1, 3, 5]
为什么该代码不返回 [1, 3, 5, 4, 6]?
错在哪里?
以及如何创建返回该列表的函数?
【问题讨论】:
-
list(filter(lambda x: x[1] % n == 0 or x[1] % m == 0, E))怎么样? -
等一下,请注意 filter() 和列表理解或多或少是一回事,尤其是在您的情况下。考虑只使用更易读的列表推导
-
我不知道 or 运算符可以加入两个列表,谢谢
标签: python python-3.x list iterator iterable