[英]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.