我是Python新手。同样的代码在R上也能很好地工作,但我不明白为什么它在Python中不起作用。。。在
Python:
#swap pair
def swap_pair(xpair):
if xpair[0] > xpair[1]:
xpair.reverse()
else:
xpair
return xpair
#swap_pass
def swap_pass(xlist):
for i in range(0,len(xlist)-1):
xlist[i:i+2] = swap_pair(xlist[i:i+2])
return xlist
def bubble_sort(data):
newdata = swap_pass(data)
if data == newdata:
return(newdata)
else:
return bubble_sort(newdata)
test = [100,6,5,3,2,1]
bubble_sort(test)
Out: [6, 5, 3, 2, 1, 100]
以下是R中运行良好的相同代码:
^{pr2}$bubble_sort(test)
[1] 1 2 3 5 6 100
你能帮忙吗?在
您的}都是对相同的的引用。{6}如果你真的想打电话给两个,那就避免打电话给你了:
swap_pass
正在进行data
变异并返回它。所以在bubble_sort
中,data
和{或者,让
^{pr2}$swap_pass
为您复制,这样调用者就不需要考虑它了(这通常是Python的方法;Python函数要么对参数进行变异,然后不返回任何内容,要么返回一个新值,并保持参数不变,它们不会改变和返回):相关问题 更多 >
编程相关推荐