📌  相关文章
📜  在Python中对列表中的数字字符串进行排序

📅  最后修改于: 2022-05-13 01:54:25.157000             🧑  作者: Mango

在Python中对列表中的数字字符串进行排序

排序列表是一项简单的任务,并且已在许多情况下处理。随着机器学习和数据科学的兴起,有时我们可以获取数字列表格式的数据,但数据类型为字符串。在这种情况下,通用排序函数会给出错误的结果,因此,必须采用其他几种方法来执行此特定任务。让我们讨论执行此操作的方式。

方法#1:朴素的方法
在朴素的方法中,需要将所有元素类型转换为通过循环迭代的列表的整数。之后,使用通用排序函数来执行任务。

# Python3 code to demonstrate 
# numeric string sorting
# using naive method 
  
# initializing list 
test_list = [ '4', '6', '7', '2', '1']
  
# printing original list 
print ("The original list is : " + str(test_list))
  
# using naive method 
# numeric string sorting
for i in range(0, len(test_list)) :
    test_list[i] = int(test_list[i])
test_list.sort()
  
# printing result
print ("The resultant sorted list  : " +  str(test_list))
输出:
The original list is : ['4', '6', '7', '2', '1']
The resultant sorted list  : [1, 2, 4, 6, 7]


方法 #2:使用sort()使用 key
通用 sort() 可用于执行此特定任务,但必须将键指定为整数才能在内部执行排序函数时将其转换为整数。

# Python3 code to demonstrate 
# numeric string sorting
# using sort() + key
  
# initializing list 
test_list = [ '4', '6', '7', '2', '1']
  
# printing original list 
print ("The original list is : " + str(test_list))
  
# using sort() + key
# numeric string sorting
test_list.sort(key = int)
  
# printing result
print ("The resultant sorted list  : " +  str(test_list))
输出:
The original list is : ['4', '6', '7', '2', '1']
The resultant sorted list  : ['1', '2', '4', '6', '7']


方法#3:使用sorted() + key
该函数具有与上述函数类似的内部工作方式。该函数比上述函数的改进之处在于它不会改变原始列表的顺序,只是返回一个视图来显示,因此在必须保持顺序的情况下很有用。

# Python3 code to demonstrate 
# numeric string sorting
# using sorted() + key
  
# initializing list 
test_list = [ '4', '6', '7', '2', '1']
  
# printing original list 
print ("The original list is : " + str(test_list))
  
# using sorted() + key
# numeric string sorting
res = sorted(test_list, key = int)
  
# printing result
print ("The resultant sorted list  : " +  str(res))
输出:
The original list is : ['4', '6', '7', '2', '1']
The resultant sorted list  : ['1', '2', '4', '6', '7']


方法#4:使用sorted() + key 和 len()
此函数与上述函数有类似的内部工作,但在大整数的情况下,与使用 key = int 相比,速度快 100 倍。此函数函数的改进是性能。这种排序方法也可以应用于sort()。

# Python3 code to demonstrate 
# numeric string sorting
# using sorted () + key with (len (x), x)
  
# initializing list 
test_list = [ '4', '6', '7', '2', '1']
  
# printing original list 
print ("The original list is : " + str (test_list))
  
# using sorted () + key with (len (x), x)
# numeric string sorting
res = sorted (test_list, key = lambda x: (len (x), x))
  
# printing result
print ("The resultant sorted list  : " +  str (res))
输出:
The original list is : ['4', '6', '7', '2', '1']
The resultant sorted list  : ['1', '2', '4', '6', '7']