如果我想知道是否可以使用列表理解,我们能否比下面的逻辑做得更好。
FruitsList = ["apples","mangoes","banana","grapes","peaches","kiwi"]
numbersList = [1,2,None,5,None,100]
for num in numbersList:
if num == None:
indexnum = numbersList.index(None)
print indexnum
del numbersList[indexnum]
del FruitsList [indexnum]
print FruitsList #['apples', 'mangoes', 'grapes', 'peaches']
print numbersList #[1, 2, 5, 4]
答案 0 :(得分:1)
我想你想要这样的东西:
s = [(a, b) for (a,b) in zip(FruitsList, numbersList) if b is not None]
FruitsList = [x[0] for x in s]
numbersList = [x[1] for x in s]
但这给出了
['apples', 'mangoes', 'grapes', 'kiwi']
正如我在评论中所说的那样。如果这不对,请告诉我,我会看到我可以修改此答案(或删除它。)
编辑:请注意,我必须将带有外括号的生成器理解中的s更改为带有外方括号的列表推导。生成器理解构建了一个生成器,它可以节省内存,并且可能更快,但是你只能迭代一次,所以在构建FruitsList之后,生成器是空的,当我们再次尝试迭代它来构建numbersList时,它是空的。
答案 1 :(得分:0)
也许有人可以尝试这样的事情
[FruitsList[i] for i in range(0, min(len(FruitsList), len(numbersList))) if not numbersList[i] is None]