此Python代码根据字符串元素提供已排序的元素 我们如何转换列表元素,它们是整数类型的字符串格式?
这是我的代码:
def insertionSort(arr, n):
for i in range(1, n):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j+1] = arr[j]
j = j - 1
arr[j+1] = key
print '\nSorted elements: ',
return (' ').join(arr)
arr = (raw_input("enter elements: ")).split(',')
print insertionSort(arr, len(arr))
答案 0 :(得分:2)
您必须使用元素将元素转换为键函数,这样您就可以使用元素本身的比较,而不是比较符合您需求的转换数据。
我会这样做作为通用解决方案:
def insertionSort(arr, n, keyfunc=lambda x:x):
for i in range(1, n):
key = arr[i]
j = i - 1
while j >= 0 and keyfunc(arr[j]) > keyfunc(key):
arr[j+1] = arr[j]
j = j - 1
arr[j+1] = key
return ' '.join(arr)
所以默认情况下,键只是元素本身,但如果你像这样调用你的函数:
insertionSort(arr, len(arr), keyfunc=int)
键功能现在是“转换为整数”,并且排序在整数列表中按预期工作为字符串。
(请注意,通过允许提供sort
函数,内置key
方法可以这样工作。
当然,您可以放弃整个keyfunc
想法,只需在此处硬编码int
:
while j >= 0 and int(arr[j]) > int(key):