如何在二维数组的 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 中分配第二个值?的主要内容,如果未能解决你的问题,请参考以下文章

c++ 用户输入 2个值 定义二维数组 但是报错

如何在 C++ 中分配一个二维指针数组

在函数 C 中分配内存二维数组

需要存储二维列表但不使用数组

二维数组数组指针以及指针数组

在函数 C++ 中分配内存二维数组