用其他值将Python列表元素替换为奇数位置

时间:2018-07-07 17:28:48

标签: python list

我有一个清单

l = ['3a' '4a' '5a' '6a' '7a' '4a' '4a' '5a' '6a' '7a' '4a']

,只想替换列表中奇数位置的元素。 结果应为:

res = ['xx' '4a' 'xx' '6a' 'xx' '4a' 'xx' '5a' 'xx' '7a' 'xx']

4 个答案:

答案 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模块中的chainitertools的组合。

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)