python中R的c()的等效函数是什么?

时间:2019-10-30 21:21:10

标签: python r

每当我尝试在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中做任何等效的操作吗?

2 个答案:

答案 0 :(得分:3)

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)给出设置的元素数,而不是包括未设置值的序列的长度。

答案 1 :(得分:1)

在python中,将项目添加到列表的正确方法是通过添加。

mylist.append(element)

否则,您可以使用列表推导来生成无或空字符串的列表:

mylist= [None for i in range(100)]

这将生成一个列表,其中包含100个“无”。然后您可以按索引进行分配:

mylist[2] = 4