Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从列表中只排序正数?_Python_List_Sorting - Fatal编程技术网

Python 如何从列表中只排序正数?

Python 如何从列表中只排序正数?,python,list,sorting,Python,List,Sorting,当用户在列表中给出正整数和负整数时,我试图创建一个只包含已排序正整数的列表。例如,如果用户给出“10-7439-6122”,我的程序只会对正数排序并给出“24101239”。 到目前为止,我的代码是这样的: list = input().split() positive_list = [] for i in range(list): if list[i] > 0: positive_list.append(list[i]) i+=1 positi

当用户在列表中给出正整数和负整数时,我试图创建一个只包含已排序正整数的列表。例如,如果用户给出“10-7439-6122”,我的程序只会对正数排序并给出“24101239”。 到目前为止,我的代码是这样的:

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
重命名为其他名称<代码>列表是一个python关键字。 例如
list\u new
list\u temp

我的建议是这样尝试:

positive_list=[]
对于listNew中的num:
如果num>0:
肯定列表。追加(num)
肯定列表。排序()

您有几个问题:

  • 您有一个名为与基本类型相同的变量(
    list
    ),该变量会隐藏该类型;选择一个更好的名字
  • 对于范围内的i(我的列表):
    不会做你想做的事;您可以对范围内的i(len(my_list))执行
    ,但您也可以对my_list中的n执行
    ,而
    n
    将依次成为
    my_list
    中的每个元素
  • 用户输入文本时,需要先将这些字符串转换为整数,然后再使用
    int()
  • 您可以
    for i..
    但是
    i+=1
    您不需要自己增加for循环变量
查看列表理解,它们非常适合于您试图以更复杂的方式进行的工作,即构建
积极列表

您的解决方案可以简单到:

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))

你的东西怎么了?你的问题是什么?那很有帮助。谢谢,不客气-如果你不再需要答案,请使用复选标记接受答案,这样其他人就可以找到解决方案,人们就不会再看问题来回答了。是的,这是我的疏忽。谢谢你的帮助