簡體   English   中英

如何修復此數字排序python代碼,以便其正常工作

[英]how to fix this number sorting python code so that it works correctly

這是關於數字排序程序的。 我無法理解join行的語法。

#!/usr/bin/env python
import sys
ar=[]
for arg in sys.argv:
    ar.append(arg)  
ar.sort()
print " ".join('%s'%x for x in ar)

'%s' % x for x in ar生成器表達式 它生成一堆'%s' % x ,其中x定義為ar每個項目。 " ".join(...)在給.join()每個項目之間放置一個空格。 給定生成器后,它將在生成器生成的每個項目之間放置一個空格。 如果ar不是字符串列表,則生成器會將每個項目轉換為字符串。 然后,我們使用" ".join(...)在每個字符串之間放置一個空格。 sys.argv始終是字符串列表,因此您不需要該生成器表達式。 您可以改為使用" ".join(sys.argv) 根據這個答案 ,無論如何使用列表理解會更有效。 您還可以使用str(x)代替"%s"%x ,因為它更易於閱讀。

我同意join行看起來非常時髦。

" ".join(...)將獲取參數列表(或任何可迭代的參數),並為您創建一個字符串,其中所有參數參數均由一個空格分隔。

在這種情況下,我只是傳遞您的排序列表ar

#!/usr/bin/env python

import sys
ar=[]
for arg in sys.argv:
    ar.append(arg)

ar.sort()
print " ".join(ar)

現在我們還有兩個問題:

  • 命令行上的第一個參數將是腳本的名稱。 我會使用sys.argv[1:]而不是sys.argv
  • 您正在排序傳入的字符串,而不是數字。 這將導致類似[1, 11, 13, 2, 3, 4, 5, 56, 9] 1、11、13、2、3、4、5、56、9]的排序。 為了解決這個問題,我將使用ar.append(int(arg))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM