我想用python写一小段代码来交换列表中的元素这个程序将接受一个列表,并将返回一个交换每对相邻元素的位置的列表:位置0和1,位置2和3,依此类推。如果列表中有奇数个元素,那么最后一个位置的元素会保持“原地不动”。
Before: [1,2,3,4,5]
After: [2,1,4,3,5]这看起来像是非蟒蛇。Python的方法是什么?
发布于 2015-05-09 04:26:56
最具蟒蛇风格的方式:
def swappairwise(a):
l = len(a)&~1
a[1:l:2],a[:l:2] = a[:l:2],a[1:l:2]发布于 2018-01-26 15:48:15
这里有一个很好的例子,如果你总是保证有even号码的话:
nums = [1,2,3,4,5,6]
print([nums[i^1] for i in range(len(nums))])
>>[2, 1, 4, 3, 6, 5] 说明:
print (0^1) #1
print (1^1) #0
print (2^1) #3
print (3^1) #2
print (4^1) #5
print (5^1) #4作为刷新程序,XOR具有以下效果:
A B | Output
---------------
0 0 0
0 1 1
1 0 1
1 1 0和官方描述:如果y中的位是0,那么输出的每一位都与x中的相应位相同,如果y中的位是1,那么它就是x中的位的补码。
发布于 2015-05-09 18:51:28
基于@Arpegius上面的答案,这里是一个可读性更好的解决方案。使用相同的方法。
def swap_list_pairwise(lis):
"""Pairwise swap of all elements in a list.
If the number of elements is odd, the leftover element
stays at its place.
"""
length = len(lis)
# Stop at second last if length is odd, otherwise use full list.
end = length - 1 if length % 2 else length
lis[1:end:2], lis[:end:2] = lis[:end:2], lis[1:end:2]https://stackoverflow.com/questions/30097512
复制相似问题