如何在python列表中的每个其他项添加文本?

All*_*tor 7 python list

我有一个列表,如:

mylist = ["1", "2", "3", "4", "5"]
Run Code Online (Sandbox Code Playgroud)

我想为每个其他项添加一些文本,所以它看起来像这样:

mylist = ["1a", "2", "3a", "4", "5a"]
Run Code Online (Sandbox Code Playgroud)

我写了这个,每个项目都适用.如何使其仅适用于所有其他项目?

mylist2 = ["a" + item for item in mylist]
Run Code Online (Sandbox Code Playgroud)

Ev.*_*nis 10

一种方法是这样做:

mylist = ["1", "2", "3", "4", "5"]
res = [x + ('a' if i%2 == 0 else '') for i, x in enumerate(mylist)]
Run Code Online (Sandbox Code Playgroud)

这导致:

['1a', '2', '3a', '4', '5a']
Run Code Online (Sandbox Code Playgroud)

这种方法利用了这样一个事实,即当你除以2时你想要改变的项的索引的余数为1.参见模数

  • 恭喜你的回答.我不喜欢它的事实是你添加一个空字符串,而不是在整个表达式上使用三元组.在这里可以避免添加到空字符串 (3认同)

Roh*_*dey 10

试试这个:

for i in range(0, len(mylist), 2):
    mylist[i] = mylist[i] + "a"
Run Code Online (Sandbox Code Playgroud)

编辑1:

for i in range(0, len(mylist), 2):
    mylist[i] += "a"
Run Code Online (Sandbox Code Playgroud)


Jea*_*bre 6

使用enumerate和模来用三元数来测试奇数或偶数值.

mylist = ["1", "2", "3", "4", "5"]
mylist2 = [item if i%2 else "a" + item for i,item in enumerate(mylist)]
Run Code Online (Sandbox Code Playgroud)

结果:

>>> mylist2
['a1', '2', 'a3', '4', 'a5']
Run Code Online (Sandbox Code Playgroud)

拿到1a,等...只需切换"a" + item通过item + "a"