我有一个这样的清单:
counters = [["0"],["0"],["0"],["0"]]
我想对每个内部值执行操作 - 比如连接,转换为int
和递增等等。
如何为所有列表项执行此操作;鉴于这是一个多维列表?
答案 0 :(得分:4)
您可以使用list comprehension(nested list comprehension):
>>> counters = [["0"],["0"],["0"],["0"]]
>>> [[str(int(c)+1) for c in cs] for cs in counters]
[['1'], ['1'], ['1'], ['1']]
BTW,为什么要使用字符串列表?
我更喜欢使用数字列表(无需转换为int
,返回str
)。
>>> counters = [0, 0, 0, 0]
>>> [c+1 for c in counters]
[1, 1, 1, 1]
答案 1 :(得分:1)
>>> 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
答案 2 :(得分:0)
>>> counters = [["0"],["0"],["0"],["0"]]
>>> counters = [ [str(eval(i[0])+1)] for element in counters ]
>>> counters
[['1'], ['1'], ['1'], ['1']]
我们可以在这里使用eval功能。关于eval()What does Python's eval() do?
答案 3 :(得分:0)
如果列表理解吓到你,你可以使用子索引。例如,
for i in range(len(counters)):
counters[i][0] = str(eval(counters[i][0]) + 1)
counters
是一个列表列表,因此您需要在添加它之前访问子索引0(第一项)。例如,counters[0][0]
是第一个子列表中的第一个项目。
此外,您的每个子项都是一个字符串,而不是整数或浮点数。 eval
函数进行正确的转换,以便我们可以添加1,外部str
函数将最终答案转换回字符串。