每当我尝试在 python 中创建一个空列表时,我意识到如果我不知道并定义它的范围,我就无法像在 R 中那样将值设置为我想要的任何索引。
q = list()
q[ 2 ] = 9
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
但在 R 中,它不会发生。
Q = c( )
Q[ 4 ] = 3
>>> [1] NA NA 4
我可以在 python 中执行任何等效操作吗?
R 中的c
函数是一个将参数连接成列表的函数。您可以使用 +
在 Python 中连接两个列表;要连接可变数量的列表,就像 R 中的 c
一样,您可以使用 sum
函数。这通常会添加数字,但可用于通过从空列表而不是从 0 开始“开始”来添加列表:
>>> lists = [[1,2,3], [4,5,6], [7,8,9]]
>>> sum(lists, [])
[1, 2, 3, 4, 5, 6, 7, 8, 9]
但是,这与您的代码中的错误无关。问题在于,在 Python 中,您只能使用语法 mylist[i] = x
在已存在的索引处设置新值。由于您创建了一个空列表,它没有任何元素,因此索引 2 超出范围。
如果您希望能够在不一定形成连续范围的任意索引处设置值,您可以使用字典:
>>> q = dict()
>>> q[2] = 9
但是,某些操作的作用与您期望它们对具有某些未设置值的列表的作用之间存在不匹配;例如,len(q)
给出已设置元素的数量,而不是包含未设置值的序列长度。