簡體   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