Python 连续元素来交换列表项



在这里我的输入是这样的:

['a','b','c','d','e','f'] 

输出:

['b','a','d','c','f','e']

我试图获得连续列表,但我在空字符串之间得到列表,所以请删除这些空列表。

s = list(input().split())
def swap(c, i, j):
c[i], c[j] = c[j], c[i]
return ' '.join(c)
result = swap(s, 0, 1)
print(list(result))

电流输出:-['b', ' ', 'a', ' ', 'c', ' ', 'd', ' ', 'e', ' ', 'f']

预期输出:-['b', 'a', 'c', 'd', 'e','f']

你只需要将c作为list返回,不需要转换为字符串并再次转换为列表:

s = ['a','b','c','d','e','f']
def swap(c, i, j):
c[i], c[j] = c[j], c[i]
return c
result = swap(s, 0, 1)
print(result)

输出:

['b', 'a', 'c', 'd', 'e', 'f']

一个简单的函数,用于交换不更改输入的对:

def swap_pairs(list_to_swap):
s = list_to_swap[:] # create copy to not touch the original sequence
for i in range(0, len(s)-1, 2):
s[i], s[i+1] = s[i+1], s[i]
return s
s0 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
s1 = ['a', 'b', 'c', 'd', 'e', 'f']
print(swap_pairs(s0))
print(swap_pairs(s1))
# ['b', 'a', 'd', 'c', 'f', 'e', 'g']
# ['b', 'a', 'd', 'c', 'f', 'e']
### check if s0 and s1 are untouched:
print(s0)
print(s1)
# ['a', 'b', 'c', 'd', 'e', 'f', 'g']
# ['a', 'b', 'c', 'd', 'e', 'f']

如果您想"就地"交换对,即直接更改输入,您可以将该过程缩短到

def swap_pairs(s):
for i in range(0, len(s)-1, 2):
s[i], s[i+1] = s[i+1], s[i]
# return s
s1 = ['a', 'b', 'c', 'd', 'e', 'f']
swap_pairs(s1)
print(s1)
# ['b', 'a', 'd', 'c', 'f', 'e']

我认为,如果在这里添加return声明,这是一个品味问题。我认为返回某些内容会更清楚,因为逻辑上不需要。无论如何,请注意变量范围。

这就是问题所在。 你加入太空。 将其更改为以下内容。

def swap(c, i, j):
c[i], c[j] = c[j], c[i]
return ''.join(c)

对于您的输出,您还可以执行以下操作。

l = [x for x in [your output list] if x!= ' ']

l = [x for x in [your output list] if len(x.strip()) > 0]

尝试只返回"C"并使用递归交换列表的所有元素 然后你会得到预期的输出。检查下面的代码。

输出以下代码: ['b

', 'a', 'd', 'c', 'f','e']
s = ['a','b','c','d','e','f']
def swap(c, i, j):
if j<=len(c) and len(c)%2==0:
c[i], c[j] = c[j], c[i]
swap(c,i+2,j+2)
elif j<len(c):
c[i], c[j] = c[j], c[i]
swap(c,i+2,j+2)
return c
result = swap(s, 0, 1)
print(list(result))

如果你想要 只有输出= ['b','a','c','d','e','f'],那么不需要递归,只需返回c。 检查下面的代码:

s = ['a','b','c','d','e','f']
def swap(c, i, j):
c[i], c[j] = c[j], c[i]
return c
result = swap(s, 0, 1)
print(list(result))

最新更新