如何在二维数组的 cel 中分配第二个值?
Posted
技术标签:
【中文标题】如何在二维数组的 cel 中分配第二个值?【英文标题】:How do I assign a second value in cel of a 2D array? 【发布时间】:2022-01-20 15:42:11 【问题描述】:我正在尝试找到一种在二维数组中包含第二个变量的方法。 此外,我只想将第二个变量分配给已经有一个变量的单元格。 例如,我从数组开始:
seq = [[1, 0, 0, 0],[1, 2, 3, 4],[2, 0, 0, 0]]
我想为已经有一个的值分配第二个整数,这样:
seq = [[(1, a), 0, 0, 0],[(1, b), (2, c), (3, d), (4, e)], [(2, f), 0, 0, 0]]
理想情况下,我想要一个循环,在其中我可以使用规则选择特定值。我不确定是否可以在不为它们分配第二个值的情况下将 0 保留在特定位置,或者是否需要将数组转换为列表。 我对 python 很陌生,通常使用 Matlab。
【问题讨论】:
这不是一个有效的列表。你的意思是seq = [[1, 0, 0, 0], [1, 2, 3, 4], [2, 0, 0, 0]]
?您的问题中缺少逗号。
列表保持顺序,因此 0 将保留在您在列表中分配的索引处
@not_speshal 对不起。添加逗号以缓解问题。
假设你能弄清楚如何找到你的元素,添加第二个值就是seq[0][0] = (1,'a')
。
【参考方案1】:
也许这样的事情会起作用:
import string
from itertools import cycle
letters = cycle(string.ascii_lowercase)
seq = [[1, 0, 0, 0], [1, 2, 3, 4], [2, 0, 0, 0]]
for i, s in enumerate(seq):
seq[i] = [(k, next(letters)) if k > 0 else k for e, k in enumerate(s)]
print(seq)
>>> [[(1, 'a'), 0, 0, 0], [(1, 'b'), (2, 'c'), (3, 'd'), (4, 'e')], [(2, 'f'), 0, 0, 0]]
【讨论】:
【参考方案2】:试试:
values = list('abcdef')
result = list()
for row in seq:
result.append([(n, values.pop(0)) if n!=0 else 0 for n in row])
>>> result
[[(1, 'a'), 0, 0, 0],
[(1, 'b'), (2, 'c'), (3, 'd'), (4, 'e')],
[(2, 'f'), 0, 0, 0]]
【讨论】:
以上是关于如何在二维数组的 cel 中分配第二个值?的主要内容,如果未能解决你的问题,请参考以下文章