Python Perksort不返回已排序列表
我有这个,我不知道如何返回排序列表Python Perksort不返回已排序列表,python,file,loops,python-3.x,Python,File,Loops,Python 3.x,我有这个,我不知道如何返回排序列表 def perkSort(lst): for i in range(1, len(lst)): number = lst[i] j = i - 1 while (j >= 0) and (lst[j] > number): lst[j+1] = lst[j] j -= 1 lst[j+1] = number def create
def perkSort(lst):
for i in range(1, len(lst)):
number = lst[i]
j = i - 1
while (j >= 0) and (lst[j] > number):
lst[j+1] = lst[j]
j -= 1
lst[j+1] = number
def createList (x):
lst = []
lst = [num.split(',') for num in x.readlines()]
return lst
def main ():
x = open(input('Enter File Name (Example - test.txt): '))
lst = [createList (x)]
sort = perkSort(lst)
print(sort)
main ()
我不知道你在问什么。但这里有一些东西可能会对你有所帮助:
def perkSort(lst):
for i in range(1, len(lst)):
number = lst[i]
j = i - 1
while (j >= 0) and (lst[j] > number):
lst[j+1] = lst[j]
j -= 1
lst[j+1] = number
return lst #<--------------
与内置Python
sort()
一样,您的perkSort()
也会修改列表,因此不需要返回它。但是,您的createList()
有点混乱
我想我已经正确猜测了test.txt文件中的数据布局。下面是一个生成随机测试数据的简短程序:
import random
random.seed(42)
r = range(10)
data = '\n'.join([', '.join([str(random.randint(0,100)) for i in r]) for j in r])
with open('test.txt', 'w') as f:
f.write(data + '\n')
这是我对你的程序的修改版本,它对数据进行排序:
def perkSort(lst):
for i in range(1, len(lst)):
number = lst[i]
j = i - 1
while (j >= 0) and (lst[j] > number):
lst[j+1] = lst[j]
j -= 1
lst[j+1] = number
def createList(x):
lst = []
for line in x:
lst += [int(s) for s in line.split(',')]
return lst
def main():
fname = input('Enter File Name (Example - test.txt): ')
#fname = 'test.txt'
x = open(fname, 'r')
lst = createList(x)
x.close()
print('Unsorted')
print(lst)
perkSort(lst)
print('\nSorted')
print(lst)
if __name__ == '__main__':
main()
你在问什么?如果这是我认为您要问的问题,那么您只需将
return lst
放在该函数的最后一行。我认为问题很清楚:一个Python新手正在问如何做错误的事情。pm2ring给出了正确的答案:“模仿list.sort,不要返回任何东西,忽略默认值”。请不要鼓励新手使用globals。
def perkSort(lst):
for i in range(1, len(lst)):
number = lst[i]
j = i - 1
while (j >= 0) and (lst[j] > number):
lst[j+1] = lst[j]
j -= 1
lst[j+1] = number
def createList(x):
lst = []
for line in x:
lst += [int(s) for s in line.split(',')]
return lst
def main():
fname = input('Enter File Name (Example - test.txt): ')
#fname = 'test.txt'
x = open(fname, 'r')
lst = createList(x)
x.close()
print('Unsorted')
print(lst)
perkSort(lst)
print('\nSorted')
print(lst)
if __name__ == '__main__':
main()