我有这样的东西:
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答案
的紧致性的改进