这是关于数字排序程序。我无法理解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)
答案 0 :(得分:1)
'%s' % x for x in ar
就是所谓的generator expression。它会生成一堆'%s' % x
,其中x
被定义为ar
中的每个项目。" ".join(...)
在给予.join()
的每个项目之间放置一个空格。当给出生成器时,它在生成器生成的每个项之间放置一个空格。如果ar
不是字符串列表,则生成器会将每个项目转换为字符串。然后,我们使用" ".join(...)
在每个字符串之间放置一个空格。 sys.argv
始终是字符串列表,因此您不需要该生成器表达式。您可以改为使用" ".join(sys.argv)
。根据{{3}},无论如何使用this answer会更有效。您也可以使用str(x)
代替"%s"%x
,因为它更容易阅读。
答案 1 :(得分:0)
我同意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]
的类型。为了解决这个问题,我会使用ar.append(int(arg))
。