更改列表中的每个第n项

时间:2017-10-31 11:02:40

标签: python

例如,如果我想像

那样每隔一个大写和小写
original_list = ['FisH', 'Dog', 'cow', 'piG']

desired_list = ['fish', 'DOG', 'cow', 'PIG']

我的方法是为上下单词制作一个单独的列表,然后将它们加入一些但是我知道这是一个不好的方法:

list1 = []
list2 = []

for i in orginal_list[0::2]:
    i = i.lower()
    list1.append(i)


for i in orginal_list[1::2]:
    i = i.upper()
    list2.append(i)

2 个答案:

答案 0 :(得分:4)

使用enumerate()功能和模数除以 2 (以检测偶数位置):

original_list = ['FisH', 'Dog', 'cow', 'piG']
result = [w.lower() if not i%2 else w.upper() for i,w in enumerate(original_list)]

print(result)

输出:

['fish', 'DOG', 'cow', 'PIG']

答案 1 :(得分:2)

与您自己的相似,但右后方分配切片。

mylist[::2] = map(str.lower, mylist[::2])
mylist[1::2] = map(str.upper, mylist[1::2])

演示:

>>> mylist= ['FisH', 'Dog', 'cow', 'piG']
>>> mylist[::2] = map(str.lower, mylist[::2])
>>> mylist[1::2] = map(str.upper, mylist[1::2])
>>> mylist
['fish', 'DOG', 'cow', 'PIG']