1.接受两个参数,第一个参数为x(类型为列表),第二个参数为n(表示一个在x中出现的数字),找出n在x中的位置,并将比n大的数放在n前,比n小的数放在n之后。
方法①,使用两个列表来实现数据的比较
#找出n在x中的位置,并将比n大的数放在n前,比n小的数放在n之后
import random
def dem6(x,n):
if n not in x:
print('the number n not in the list:',x)
return
j=x.index(n)
x[0],x[j]=x[j],x[0]
key=x[0]
j=0
i=len(x)-1
while j<i:
while j<i and x[i]>=key:
i-=1
x[j]=x[i]
while j<i and x[j]<=key:
j+=1
x[i]=x[j]
x[j]=key
return (x,x.index(n))
x=list(range(1,10))
random.shuffle(x)
print(x)
print(dem6(x,4),end='\n')
print(x)
方法②使用三个列表最后合并的方法来实现
#方法二
import random
import re
def dem61(x,n):
if n not in x:
print('error:',x)
return
#i=x.index(n)
m=[]
c=[]
d=[]
for i in range(len(x)):
if x[i]<n:
m.append(x[i])
elif x[i]>n:
c.append(x[i])
else:
d.append(x[i])
return m+d+c
x=list(range(1,10))
random.shuffle(x)
print(x)
print(dem61(x,4),end='\n')
print(x)
运行效果如下:
[7, 8, 4, 3, 5, 2, 1, 9, 6]
([1, 2, 3, 4, 5, 7, 8,