我正在研究一个关于元组的噱头问题并最终解决了......但我觉得我的编码真的很难看。有没有pythonic /更简单的方法?基本上,这个问题给你一个元组,你需要对元组进行排序,从同一个元组中删除数字,然后创建一个这样的输出。
OUTPUT = [this,sentence,should,now,make,sense]
一开始,你有......
t=[(4,'make'),(1,'sentence'),(0,'this'),(3,'now'),(5,'sense'),(2,'should')]
我的解决方案
t=[(4,'make'),(1,'sentence'),(0,'this'),(3,'now'),(5,'sense'),(2,'should')]
def makeList(t):
result = ''
t.sort()
for x, y in t:
result += y +', '
result = result[:-2]
result = ('[' + ', '.join([result]) + ']')
return result
OUTPUT: [this, sentence, should, now, make, sense]
答案 0 :(得分:7)
这很简单:
sentence = [(4,'make'),(1,'sentence'),(0,'this'),(3,'now'),(5,'sense'),(2,'should')]
print "[%s]" % ', '.join(word for _,word in sorted(sentence))
这里有几点需要注意:
join
的参数。语法与list comprehensions _
表示我们不需要元组的第一个值(数字),而只需要第二个部分(单词)[]
的最终字符串。我们也可以在这里使用str.format
,但我觉得它看起来更干净(在这个例子中)答案 1 :(得分:0)
替代Niklas Baumstark正确答案:
>>> sentence = [(4,'make'),(1,'sentence'),(0,'this'),\
... (3,'now'),(5,'sense'),(2,'should')]
>>> [w for t,w in sorted(sentence)]
['this', 'sentence', 'should', 'now', 'make', 'sense']
(如果你真的想要一个列表而不是一个看起来像列表的字符串......)