我的输入如下:
['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']
答案 0 :(得分:2)
您只需要将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']
答案 1 :(得分:0)
这是问题。.您加入太空。将其更改为以下内容。
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]
答案 2 :(得分: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))
答案 3 :(得分:0)
一个简单的交换对功能,它不会更改输入:
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
语句,我认为这是一个品味问题。我认为返回 not 更为明确,因为逻辑上不需要。无论如何,要注意可变范围。