Python - 在列表中插入元素

4
我从CSV文件中获取了一个数组,结果看起来像是一个列表:
my_list = ["Nov '15", '75', '49', '124', '62', '18', '80', '64.5', '', '', '', '', '', '', '', '']

现在,我想用一个长度为''的数组填充空位,假设我想要放入的数组是:

new_array = [1,2,3,4,5,6,7,8]

这是我正在尝试的代码,但它并没有起作用。

i = 0
for item in new_array:
    index = 8+i
    print item
    my_list.insert(index, item)
    i += 0

这不会改变任何东西,我的列表还是一样的吗?

我该怎么改变它?

谢谢。


“''” 总是从索引8开始吗? - Andrés Pérez-Albela H.
5个回答

3

试试这个:

i = 8
for item in new_array:
    my_list[i] = item # you want to replace the value
    i += 1            # you forgot to increment the variable

您没有对变量i进行递增,而insert()会将项目移动到右侧,而不是替换它们。当然,更传统的解决方案是:

my_list = my_list[:8] + new_array

0
my_list = ["Nov '15", '75', '49', '124', '62', '18', '80', '64.5', '', '', '', '', '', '', '', '']
new_array = [1,2,3,4,5,6,7,8]
i = 0
for item in new_array:
    index = 8+i
    print item
    my_list.remove('')
    my_list.insert(index, item)
    i += 1
print my_list

输出:

1
2
3
4
5
6
7
8
["Nov '15", '75', '49', '124', '62', '18', '80', '64.5', 1, 2, 3, 4, 5, 6, 7, 8]

0

类似这样的东西:

new_iter = iter(new_array)
my_list = [i if i != '' else next(new_iter) for i in my_list]
print(my_list)

0

这段代码可以处理从任何索引开始的''(空字符串):

my_list = ["Nov '15", '75', '49', '124', '62', '18', '80', '64.5', '', '', '', '', '', '', '', '']

starts_at = my_list.index('')
amount_of_empty_strings = 0

for i, item in enumerate(my_list):
    if item.strip() == "":
        my_list[amount_of_empty_strings+starts_at] = amount_of_empty_strings+1
        amount_of_empty_strings+=1

print my_list

输出:

["Nov '15", '75', '49', '124', '62', '18', '80', '64.5', 1, 2, 3, 4, 5, 6, 7, 8]

0

使用列表推导式

>>> new_array = [1,2,3,4,5,6,7,8]
>>> new_array.reverse()
>>> new_array
[8, 7, 6, 5, 4, 3, 2, 1]
>>> [new_array.pop()  if item is '' else item  for item in my_list]
["Nov '15", '75', '49', '124', '62', '18', '80', '64.5', 1, 2, 3, 4, 5, 6, 7, 8]

或者

>>> from collections import deque
>>> new_array = deque([1,2,3,4,5,6,7,8])
>>> [new_array.popleft()  if item is '' else item  for item in my_list]
["Nov '15", '75', '49', '124', '62', '18', '80', '64.5', 1, 2, 3, 4, 5, 6, 7, 8]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接