簡體   English   中英

如何僅對列表中的正數進行排序?

[英]How to sort only positive numbers from a list?

當用戶在該列表中給出正整數和負整數時,我試圖制作一個僅排序的正列表的列表。 例如,如果用戶給出“10 -7 4 39 -6 12 2”,我的程序只會對正數進行排序並給出“2 4 10 12 39”。 到目前為止,這就是我的代碼的樣子:

list = input().split()

positive_list = []

for i in range(list):
    if list[i] > 0:
        positive_list.append(list[i])
        i+=1
positive_list.sort()
print(positive_list)

你有幾個問題:

  • 您有一個與基本類型( list )命名相同的變量,它會隱藏類型; 取個好聽的名字
  • for i in range(my_list):不符合你的想法; 你可以for i in range(len(my_list)): ,但你也可以只for n in my_list:並且n將依次是my_list中的每個元素
  • 您的用戶輸入文本,您需要將這些字符串轉換為整數,然后再將它們與其他整數進行比較,使用int()
  • for i..而且i += 1你不需要自己增加 for 循環變量。

查看列表推導,它們非常適合您以更復雜的方式嘗試執行的操作,以構建positive_list

您的解決方案可能很簡單:

print(sorted([int(x) for x in input().split() if int(x) > 0]))

但更接近你正在嘗試的東西:

numbers = [int(x) for x in input().split()]
sorted_positive_numbers = sorted([x for x in numbers if x > 0])
print(sorted_positive_numbers)

如果您堅持使用for循環而不是列表推導:

numbers = [int(x) for x in input().split()]
positive_numbers = []
for number in numbers:
    if number > 0:
        positive_numbers.append(number)
print(sorted(positive_numbers))

list重命名為其他內容。 list是一個 python 關鍵字。 例如list_newlist_temp

我的建議是這樣嘗試:

positive_list = []
for num in listNew:
  if num > 0:
    positive_list.append(num)

positive_list.sort()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM