繁体   English   中英

Python:如何反转列表中的所有其他字符串?

[英]Python: How do I reverse every other string in a list?

我想反转列表中的所有其他单词。 我的清单是 -

['Bananas', 'Apples', 'Fruits', 'Chocolate', 'Watermelon', 'Kiwi', 'Avacado', 'Lemon', 'Lime', 'Money']

我如何颠倒所有其他单词,所以 output 应该是。

['Bananas', 'selppA', 'Fruits', 'etalocohC', 'Watermelon', 'iwiK', 'Avacado', 'nomeL', 'Lime', 'yenoM']

第一个字母不必很大,我就是这样。 非常感激

这是一种简单的方法:

>>> s = ['Bananas', 'Apples', 'Fruits', 'Chocolate', 'Watermelon', 'Kiwi', 'Avacado', 'Lemon', 'Lime', 'Money']
>>> for i in range(1, len(s), 2):
        s[i] = s[i][::-1]

>>> s
['Bananas', 'selppA', 'Fruits', 'etalocohC', 'Watermelon', 'iwiK', 'Avacado', 'nomeL', 'Lime', 'yenoM']

range(1, len(s), 2)从 position 1开始,按二进制计数。

[::-1]反转字符串。

我觉得发布的许多解决方案都非常聪明,但对于初学者来说可能有点太容易理解了。 该解决方案并不简单,只需一步即可达到效果。

>>> x = ['Bananas', 'Apples', 'Fruits', 'Chocolate', 'Watermelon', 'Kiwi', 'Avacado', 'Lemon', 'Lime', 'Money']
>>> [v[::1-(i%2)*2] for i, v in enumerate(x)]
['Bananas', 'selppA', 'Fruits', 'etalocohC', 'Watermelon', 'iwiK', 'Avacado', 'nomeL', 'Lime', 'yenoM']

您可以通过编写word[::-1]来反转字符串word ,因此任务只是将其应用于所有其他元素。 这可以通过列表理解来解决,使用enumerate并检查索引是奇数还是偶数。

>>> words = ['Bananas', 'Apples', 'Fruits', 'Chocolate', 'Watermelon',
             'Kiwi', 'Avacado', 'Lemon', 'Lime', 'Money']
>>> [ (word if i%2 == 0 else word[::-1]) for i, word in enumerate(words) ]
['Bananas', 'selppA', 'Fruits', 'etalocohC', 'Watermelon', 'iwiK',
 'Avacado', 'nomeL', 'Lime', 'yenoM']

我觉得发布的许多解决方案都非常聪明,但对于初学者来说可能有点难以理解。 该解决方案非常简单,并且使用简单的步骤即可实现结果。

words = ['Bananas', 'Apples', 'Fruits', 'Chocolate', 'Watermelon', 'Kiwi', 'Avacado', 'Lemon', 'Lime', 'Money']

for index in range(0,len(words)):
    if index%2 != 0: #find every other 'index'
        words[index] = words[index][::-1] #reverse word at every other 'index'



在一行中:

list1 = ['Bananas', 'Apples', 'Fruits', 'Chocolate', 'Watermelon', 'Kiwi', 'Avacado', 'Lemon', 'Lime', 'Money']

[x[::-1] if i % 2 != 0 else x for i, x in enumerate(list1)]
['Bananas',
 'selppA',
 'Fruits',
 'etalocohC',
 'Watermelon',
 'iwiK',
 'Avacado',
 'nomeL',
 'Lime',
 'yenoM']

您可以使用 map 进行迭代和枚举以获取索引。 检查索引是否为奇数,然后使用 [::-1] 反转

Python 2

>>> v=['Bananas', 'Apples', 'Fruits', 'Chocolate', 'Watermelon', 'Kiwi', 'Avacado', 'Lemon', 'Lime', 'Money']
>>> map( lambda (i,x): x[::-1] if i % 2 == 1 else x , enumerate(v))
['Bananas', 'selppA', 'Fruits', 'etalocohC', 'Watermelon', 'iwiK', 'Avacado', 'nomeL', 'Lime', 'yenoM']

Python 3

list(map( lambda x: x[1][::-1] if x[0] % 2 == 1 else x[1], enumerate(v)))

以上将给出一个新列表。 如果要修改相同的列表,则

 >>> v=['Bananas', 'Apples', 'Fruits', 'Chocolate', 'Watermelon', 'Kiwi', 'Avacado', 'Lemon', 'Lime', 'Money']
 >>> for i,x in enumerate(v):
  ...  if i %2 == 1:
  ...    v[i]=v[i][::-1]
 >>> v
['Bananas', 'selppA', 'Fruits', 'etalocohC', 'Watermelon', 'iwiK', 'Avacado', 'nomeL', 'Lime', 'yenoM']

您可以像这样通过 2 遍历您的列表

for word in my_words[::2]:
    print(reversed(word)) 

这将逐步遍历您的数组,但 2 并将反向打印单词。 您还可以使用word[::-1]反转单词

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM