【问题标题】:Change every nth item in a list更改列表中的每第 n 个项目
【发布时间】:2017-10-31 11:02:39
【问题描述】:

例如,如果我想让每一秒都变成大写和小写

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)

【问题讨论】:

    标签: python


    【解决方案1】:

    与您自己的类似,但将切片分配回来。

    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']
    

    【讨论】:

      【解决方案2】:

      使用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']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-27
        • 2015-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-27
        • 2021-12-25
        相关资源
        最近更新 更多