繁体   English   中英

如果满足条件,修改列表元素的Python方法

[英]Pythonic way to modify list element if condition is met

我有这样的事情:

myListOfLists = [["descrA",True,3],["descrB",True,5],["descrB",True,65],..]

对于myListOfLists[element][2] <= 30我需要为列表中的每个元素将myListOfLists[element][1]为False。

myListOfLists应该变为:

[["descrA",False,3],["descrB",False,5],["descrB",True,65],..]

python中执行此操作的最佳方法是什么?

可能有很多方法可以做到,这取决于您所说的“ python最佳方法”的含义。 这是其中之一:

for i in myListOfLists:
    if i[2] <= 30:
        i[1] = False

由于“最佳”可能意味着:快速,高效存储,可读性强等,您可以检查哪种方法适合您的需求。

例如,要检查速度,您可以使用timeit并比较各种解决方案。


“最好”不应意味着“ 不必要的复杂 ”。

可能最好的方法是:

[(elem, False, num) if num <= 30 else (elem, cond, num) for (elem, cond, num) in myListOfLists]
[(elem, cond and (num > 30), num) for (elem, cond, num) in myListOfLists]

改善@Mikhail答案的紧凑性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM