2

Python 菜鸟在这里。我需要存储一个浮点数组数组。我正在这样做,但没有成功:

distance = [] ##declare my array
distance.append ([]) ##add an empty array to the array
distance[len(distance)-1].append ([0,1,2,3.5,4.2]) ## store array in array[0]
print distance[0][1] ## this doesnt work, the array above got stored as 1 item
4

4 回答 4

3

list.extend不使用list.append

extend和之间的区别在于appendappend传递给它的对象按原样附加。虽然extend期望传递给它的项目是可迭代的(列表、元组、字符串等)并将其项目附加到列表中。

使用append我们可以附加任何类型的对象;即可迭代或不可迭代。


>>> lis = [1,2,3]
>>> lis.append(4)      #non-iterable
>>> lis.append('foo')  #iterable
>>> lis
[1, 2, 3, 4, 'foo']

extend行为不同,实际上将可迭代的单个项目附加到列表中。

>>> lis = [1,2,3]
>>> lis.extend('foo')      #string is an iterable in python
>>> lis
[1, 2, 3, 'f', 'o', 'o']   #extend appends individual characters to the list
>>> lis.extend([7,8,9])    #same thing happend here
>>> lis
[1, 2, 3, 'f', 'o', 'o', 7, 8, 9]
>>> lis.extend(4)          #an integer is an not iterable so you'll get an error
TypeError: 'int' object is not iterable

你的代码

>>> distance = [[]]
>>> distance[-1].extend ([0,1,2,3.5,4.2])
>>> distance
[[0, 1, 2, 3.5, 4.2]]

这将返回:

[[0, 1, 2, 3.5, 4.2]]

如果你想这样做,那么就不需要append[]然后调用list.extend,直接使用list.append

>>> ditance = [] ##declare my array
>>> distance.append([0,1,2,3.5,4.2])
>>> distance
[[0, 1, 2, 3.5, 4.2]]
于 2013-07-10T02:28:49.940 回答
2

使用extend代替append

distance[-1].extend([0,1,2,3.5,4.2])

(另外,注意distance[len(distance)-1]可以写distance[-1]。)

于 2013-07-10T02:28:56.780 回答
1

您也可以这样做(因为您已经将一个空列表初始化为distance[0]):

distance[len(distance)-1] += [0,1,2,3.5,4.2]
于 2013-07-10T02:30:02.647 回答
1

这是你所做的:

  1. 做一个列表
  2. 将列表添加到列表
  3. 将列表添加到列表中的列表。如果你看过《盗梦空间》,你就会知道你现在有 3 个列表,而第 3 个列表中有一些项目

有几种方法可以实现您的目标:

1.

distance[len(distance)-1].extend([0,1,2,3,4,5]) #this one has been addressed elseqhere
  1. 下一个对您来说应该是最有意义的。循环并附加到您的内部列表

    for item in [0,1,2,3,4]:
        distance[ -1 ].append( item)
    
  2. 最后一个很酷,很高兴知道,虽然在这里真的很间接:

    map( lambda item : distance[0].append( item ), [1,2,3,4,5] )
    
于 2013-07-10T02:51:23.367 回答