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

时间:2015-03-21 12:39:47

标签: python list python-3.x python-3.4

我有这样的事情:

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

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

myListOfLists应该成为:

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

python中最好的方法是什么?

3 个答案:

答案 0 :(得分:6)

根据“python中的最佳方法”的含义,可能有很多方法可以做到这一点。这是其中之一:

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

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

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


“最佳”不应该是什么意思,是“unnecessarily complex”。

答案 1 :(得分:0)

可能这是最好的捣蛋方式:

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

答案 2 :(得分:0)

[(elem, cond and (num > 30), num) for (elem, cond, num) in myListOfLists]

改善@ Mikhail答案的紧凑性