繁体   English   中英

如何在没有内置python的列表的特定索引中进行降序排序

[英]how to sort descending order in specific index of list without built-in in python

我的问题是这个。
1. Input N
2. Input N numbers are entered in the list. For example, N is 5 means 3,2,1,2,4 or 1,2,9,7,5 or 4,2,1,3,8 whatever, N is 3 means 1,2,3 or 7,4,8 or 2,13,26 whatever.

3. Input A and B

4. Sort descending order list only in index A to B. For example, N = 7, input numbers are 3 2 0 6 7 9 1, A=2, B=5, the output is [3, 2, 9, 7, 6, 0, 1]

我的 output 是这样的
[3、2、6、0、7、9、1]
[3、2、7、0、6、9、1]
[3、2、9、0、6、7、1]
[3、2、9、6、0、7、1]
[3、2、9、7、0、6、1]
[3、2、9、0、7、6、1]
[3、2、9、0、6、7、1]

问题是最后2 output 太奇怪了,我不知道我在做什么错。

n = int(input())
list = []
for i in range(n):
    list.append(int(input()))

a = int(input())
b = int(input())
b+=1
tmp=0

for i in range(a,b):
    for j in range(a+1,b):
        if list[i]<list[j]:
            tmp=list[i]
            list[i]=list[j]
            list[j]=tmp
            print(list)

您可以像这样交换list中的两个值:

list_[i], list_[j] = list_[j], list_[i]

给您的一个建议: Don't use built-in data-type names as variable names.

您可以尝试以下方法:

n = int(input())
list = []
for i in range(n):
    list.append(int(input()))

a = int(input())
b = int(input())
b+=1
tmp=0

for i in range(a,b):
    for j in range(i+1,b):
        if list[i]<list[j]:
            tmp=list[i]
            list[i]=list[j]
            list[j]=tmp
            print(list)

我会尝试为自己简化这一点,也许尝试不使用循环。

您的列表生成,仅添加了输入方向并将列表名称更改为“main”:

n = int(input("n:"))
main = []
for i in range(n):
    main.append(int(input(f'{i+1} of {n}:')))
a = int(input("a:"))
b = int(input("b:"))

现在将您的列表拆分为各个部分,并使用内置的.sort() function。

# Slice into three parts
start = main[:a]
mid = main[a:b+1]
end = main[b+1:]
# Sort the middle, descending
mid.sort(reverse = True)
# Re-combine the lists
main = start + mid + end
print(main)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM