从python中的字符串生成的列表

从python中的字符串生成的列表,python,python-2.7,Python,Python 2.7,伙计们,我是python的初学者,我刚刚注意到一件事,当我使用split(“”)[按空格拆分元素]从字符串生成列表时,列表上的操作(如sort)会给出不符合预期的混乱结果。 请告诉我如何克服这个问题?这是我的密码 str=raw_input() #suppose i give "50 100 50" as string var=str.split(' ') #it splits into [50,100,50] var.sort() #now sorting command print

伙计们,我是python的初学者,我刚刚注意到一件事,当我使用split(“”)[按空格拆分元素]从字符串生成列表时,列表上的操作(如sort)会给出不符合预期的混乱结果。 请告诉我如何克服这个问题?这是我的密码

str=raw_input()  #suppose i give "50 100 50" as string
var=str.split(' ') #it splits into [50,100,50]

var.sort()  #now sorting command

print "Sorted var is: %r" %var  #it gives [100,50,50] instead of [50,50,100]

在variablevar中,您有一个字符串值,字符“1”的代码小于字符“5”的代码,依此类推。它必须按数值排序。必须将值转换为int

请尝试以下代码:

str=raw_input()  #suppose i give "50 100 50" as string
var=str.split(' ') #it splits into [50,100,50]

#converting string to int
var = [int(num) for num in var]

var.sort()  #now sorting command

print "Sorted var is: %r" %var  

它给出了[50,50100]这里有3个问题

第一个,分割字符串后,会得到一个字符串列表,然后按字母顺序排序,其中100确实在50之前

因此,首先需要将字符串列表转换为整数列表,如下所示:

int_list = [int(x) for x in var]
或者,如果函数已存在,则为我的最爱:

int_list = map(int, var)
第二个问题与问题无关,但值得一提的是线路

str=raw_input()
不要使用
str
作为变量名,因为它是Python中的一个类型、一个函数和一个类,并且通过赋值已经覆盖了它

最后,使用

split('')

没有任何空格,只是一个空字符串。这种方式在Python中得到了特别处理,可以在所有类型的空间上进行拆分,例如一行中的许多空间、新行、选项卡等。。。将其与空字符串参数一起使用非常有用。

Thank txid和spider main Answare的可能副本非常有用