Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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_Sorting - Fatal编程技术网

Python列表-对整数排序,然后对字符串排序

Python列表-对整数排序,然后对字符串排序,python,sorting,Python,Sorting,我需要使用sorted() test2 = [1,'2',3,'4',5,'A'] 到此处(创建一个新列表,该列表首先包含已排序的整数,然后包含已排序的字符串): 试试这个: test2 = sorted([i for i in test2 if isinstance(i, int)]) + \ sorted([i for i in test2 if isinstance(i, str)]) 试试这个: test2 = sorted([i for i in test2 if

我需要使用
sorted()

test2 = [1,'2',3,'4',5,'A']
到此处(创建一个新列表,该列表首先包含已排序的整数,然后包含已排序的字符串):

试试这个:

test2 = sorted([i for i in test2 if isinstance(i, int)]) + \
        sorted([i for i in test2 if isinstance(i, str)])
试试这个:

test2 = sorted([i for i in test2 if isinstance(i, int)]) + \
        sorted([i for i in test2 if isinstance(i, str)])
这取决于
False
和元组按字典顺序排序的事实

更多详情: 元组通常用于按多个度量进行排序。 考虑这一点:

key=lambda x: isinstance(x, str)
sorted
key
关键字参数告诉它根据给定可调用的结果而不是变量本身对值进行排序。 对于整数,此键将返回
False
;对于字符串,此键将返回
True
。因为,
False
被认为较小,所有整数将在列表中首先排序

这只是我们想要的一半,因为整数和字符串之间没有排序。这是我们的元组。上述关键功能:

key=lambda x: (isinstance(x, str), x)
返回每个元素的元组。元组首先按其第一个元素排序。如果两个元组有一个等价的第一个元素,则比较它们的第二个元素,依此类推。这就是所谓的。 假设我们有以下列表:

this = ["a", 5, "b", 3]
按键功能将按以下顺序返回:

(True, "a"), (False, 5), (True, "b"), (False, 3)
元组将首先按其第一个元素布尔值排序:

(False, 5), (False, 3), (True, "a"), (True, "b")
现在,我们有两对元组,它们的第一个元素相等。每对将按其第二个元素进行内部排序:

(False, 3), (False, 5), (True, "a"), (True, "b")
最终结果不是元组本身,而是每个元组的键函数的相应输入:

[3, 5, "a", "b"]
实际上,该算法不需要“两次”排序,但在概念上是相同的

这取决于
False
和元组按字典顺序排序的事实

更多详情: 元组通常用于按多个度量进行排序。 考虑这一点:

key=lambda x: isinstance(x, str)
sorted
key
关键字参数告诉它根据给定可调用的结果而不是变量本身对值进行排序。 对于整数,此键将返回
False
;对于字符串,此键将返回
True
。因为,
False
被认为较小,所有整数将在列表中首先排序

这只是我们想要的一半,因为整数和字符串之间没有排序。这是我们的元组。上述关键功能:

key=lambda x: (isinstance(x, str), x)
返回每个元素的元组。元组首先按其第一个元素排序。如果两个元组有一个等价的第一个元素,则比较它们的第二个元素,依此类推。这就是所谓的。 假设我们有以下列表:

this = ["a", 5, "b", 3]
按键功能将按以下顺序返回:

(True, "a"), (False, 5), (True, "b"), (False, 3)
元组将首先按其第一个元素布尔值排序:

(False, 5), (False, 3), (True, "a"), (True, "b")
现在,我们有两对元组,它们的第一个元素相等。每对将按其第二个元素进行内部排序:

(False, 3), (False, 5), (True, "a"), (True, "b")
最终结果不是元组本身,而是每个元组的键函数的相应输入:

[3, 5, "a", "b"]

实际上,该算法不需要“两次”排序,但在概念上是相同的。

分别过滤数字和字符串,然后将它们串联起来

num=list(filter( lambda x: type(x)==int , test2 )) 
string=list(filter( lambda x: type(x)==str , test2 ))
sorted(num)+sorted(string) 

分别过滤数字和字符串,然后将它们连接起来

num=list(filter( lambda x: type(x)==int , test2 )) 
string=list(filter( lambda x: type(x)==str , test2 ))
sorted(num)+sorted(string) 

非常感谢。你能简单解释一下逻辑吗?谢谢!你能简单解释一下逻辑吗?这是蟒蛇3号还是蟒蛇2号。在python2中,你可以只做
sorted(test2)
@Austin:这是一个重复,但是询问是一个可怕的目标;我们应该接近哪个?我只是编辑了一下,要求更清楚。@smci,当然;应该关闭,只要答案是OP.:)这是蟒蛇3或蟒蛇2。在python2中,你可以只做
sorted(test2)
@Austin:这是一个重复,但是询问是一个可怕的目标;我们应该接近哪个?我只是编辑了一下,要求更清楚。@smci,当然;应该关闭,只要回答了操作:)