我有三个长度相同的列表,另一个列表存储需要从所有三个列表中删除的元素的索引。这是我的意思的一个例子:
a = [3,4,5,12,6,8,78,5,6]
b = [6,4,1,2,8,784,43,6,2]
c = [8,4,32,6,1,7,2,9,23]
(都有len()=9
)
另一个列表包含我需要从所有三个列表中删除的元素的索引:
d = [8,5,3]
(请注意,它已经排序)
我知道我可以从三个列表中删除一个元素:
for indx in d:
del a[indx]
del b[indx]
del c[indx]
我怎么能在一条线上做到这一点?你知道吗
我认为只要你的代码就可以了,把它变成一行:
但我还是喜欢把它留给两行循环;)
也许
numpy
对于这样的事情很有用,如果您的三个列表是2Dnumpy.array
,那么删除指定的列将非常容易。你知道吗结果:
不是一行,而是简洁、可读、完全惯用的Python:
然而,事实上,你这样做首先意味着也许不是3个单独的列表变量,你应该有一个由3个列表组成的列表,或者一个由三个列表组成的dict,它们的名字分别是
'a'
、'b'
和'c'
。你知道吗如果你真的想把它放在一行:
但那真的很可怕。当您不关心值时,您正在调用
pop
,并建立一个您不需要的tuple
。你知道吗如果你想玩代码高尔夫,你可以通过使用一个列表来保存几个字符,这会增加一个语言滥用,并构建另一个你实际上不想要的更大的对象,就像Ioan Alexandru Cucu的回答:
当然,把它写在一行的最好方法是把它分解成一个函数:
现在,你需要做的300次中的每一次,只是:
相关问题 更多 >
编程相关推荐