替换列表列表中的每个第 n 个元素

iny*_*ace 1 python replace list

我有一个列表的数字列表

a = [[1,2,3,4,5,6],
     [7,8,9,10,11,12],
     [13,14,15,16,17,18]]
Run Code Online (Sandbox Code Playgroud)

我想将每个第 n 个元素替换为 0 以获得类似的结果(在本例中 n=3)

a = [[0,2,3,0,5,6],
     [0,8,9,0,11,12],
     [0,14,15,0,17,18]]
Run Code Online (Sandbox Code Playgroud)

我希望能做到这样的事情

a = [[i, j if j %n == 0 else i] for i, j in a]
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚它需要的论点。

ggo*_*len 5

您可以在内部列表理解中使用三元 if-并将每个元素作为元组访问索引:elseenumerate

n = 3
result = [[x if i % n else 0 for i, x in enumerate(y)] for y in a]
Run Code Online (Sandbox Code Playgroud)

应用于您的示例列表,

>>> a = [[1,2,3,4,5,6],[7,8,9,10,11,12],[13,14,15,16,17,18]]
>>> n = 3
>>> [[x if i % n else 0 for i, x in enumerate(y)] for y in a]
[[0, 2, 3, 0, 5, 6], [0, 8, 9, 0, 11, 12], [0, 14, 15, 0, 17, 18]]
Run Code Online (Sandbox Code Playgroud)