假设我有以下列表:
list = [["A",0,"C"],["B",1,"C"]]
我想做一些事情来完成以下任务:将第一列中的值设置为等于“ D”,其中第二列中的值等于0。
因此更新后的列表应如下所示:
list = [["D",0,"C"],["B",1,"C"]]
答案 0 :(得分:1)
不建议为变量list
命名,因为它会遮盖内置函数list()
。
如果要执行此操作,请使用索引:
lst = [["A", 0 ,"C"],["B", 1 ,"C"]]
for i in range(len(lst)):
if lst[i][1] == 0:
lst[i][0] = "D"
print(lst)
# [['D', 0, 'C'], ['B', 1, 'C']]
否则,您可以使用列表理解重建列表:
print([["D", y, z] if y == 0 else [x, y ,z] for x, y, z in lst])
# [['D', 0, 'C'], ['B', 1, 'C']]
您也可以通过这种方式进行操作而无需打开包装:
print([["D"] + sublst[1:] if sublst[1] == 0 else sublst for sublst in lst])
# [['D', 0, 'C'], ['B', 1, 'C']]
也没有什么可以阻止您正常进行此操作:
newlst = []
for sublst in lst:
if sublst[1] == 0:
newlst.append(["D"] + sublst[1:])
continue
newlst.append(sublst)
print(newlst)
# [['D', 0, 'C'], ['B', 1, 'C']]
可能性列表还在继续(无双关)。
同样在Python中,bool(0)
的计算结果为False
,因此您可以 在此处使用not
而不是显式检查== 0
。您可以决定是否值得使用,因为空类型和序列(例如""
,[]
,()
,{}
等)也将得出False
测试真实性时。