我有一个清单
l = ['3a' '4a' '5a' '6a' '7a' '4a' '4a' '5a' '6a' '7a' '4a']
,只想替换列表中奇数位置的元素。 结果应为:
res = ['xx' '4a' 'xx' '6a' 'xx' '4a' 'xx' '5a' 'xx' '7a' 'xx']
答案 0 :(得分:3)
def replace_odd(l, v='xx'):
return [v if not i%2 else x for i,x in enumerate(l)]
答案 1 :(得分:0)
在您的示例中,您想替换 even 元素,因为在python中,第一个元素的索引为0。
标准python:
l = ['3a', '4a', '5a', '6a', '7a', '4a', '4a', '5a', '6a', '7a', '4a']
for i in range(0, len(l), 2):
l[i] = 'xx'
使用numpy:
import numpy as np
l = np.array(['3a', '4a', '5a', '6a', '7a', '4a', '4a', '5a', '6a', '7a', '4a'])
l[::2] = 'xx'
答案 2 :(得分:0)
您可以使用cycle
模块中的chain
和itertools
的组合。
from itertools import cycle, chain
l = ['3a', '4a', '5a', '6a', '7a', '4a', '4a', '5a', '6a', '7a', '4a']
print(list(chain.from_iterable(zip(l[1::2], cycle(['xx'])))))
这将输出:
['4a', 'xx', '6a', 'xx', '4a', 'xx', '5a', 'xx', '7a', 'xx']
答案 3 :(得分:-1)
list=[1,2,3,4,5,6,7,8,9,10]
print('Initial List with 10 Element:')
print(list)
for i in range(0, len(list), 2):
list[i]=0
print('After replacing new element in the odd place:')
print(list)
list.append(16)
list.append(17)
list.append(18)
print('List after adding three element at the end')
print(list)
list.insert(0,100)
print('List after adding one element at the beginning:')
print(list)
list.extend([20,21,23,24,25])
print('List after adding new list to the existing one:')
print(list)