How to perform an operation on all values of a 2D list in Python
我有一个这样的清单:
1 | counters = [["0"],["0"],["0"],["0"]] |
我想对每个内部值执行一个操作,比如串联、转换为
如果这是一个多维的列表,那么如何对所有列表项执行此操作?
可以使用列表理解(嵌套列表理解):
1 2 3 | >>> counters = [["0"],["0"],["0"],["0"]] >>> [[str(int(c)+1) for c in cs] for cs in counters] [['1'], ['1'], ['1'], ['1']] |
顺便问一下,为什么要使用字符串列表?
我宁愿使用一个数字列表(不需要转换成
1 2 3 | >>> counters = [0, 0, 0, 0] >>> [c+1 for c in counters] [1, 1, 1, 1] |
1 2 3 4 5 6 7 | >>> counter=['0']*10 >>> counter ['0', '0', '0', '0', '0', '0', '0', '0', '0', '0'] >>> counter=['1']*10 >>> counter ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1'] overwrite a counter with 1,s |
如果列表理解让你感到害怕,你可以使用子索引。例如,
1 2 | for i in range(len(counters)): counters[i][0] = str(eval(counters[i][0]) + 1) |
此外,每个子项都是一个字符串,而不是整数或浮点。
1 2 3 4 | >>> counters = [["0"],["0"],["0"],["0"]] >>> counters = [ [str(eval(i[0])+1)] for element in counters ] >>> counters [['1'], ['1'], ['1'], ['1']] |
我们可以在这里使用eval函数。关于eval()python的eval()做什么?