Python 还有比排序元组更优雅的解决方案吗?
我正在研究一个关于元组的有点噱头的问题,最终解决了它。。。但我觉得我的代码真的很难看。有没有比这更简单的方法?基本上,这个问题给出了一个元组,您需要对元组进行排序,从同一元组中删除数字,然后创建这样的输出 输出=[这句话,现在应该有意义了] 一开始,你有Python 还有比排序元组更优雅的解决方案吗?,python,sorting,tuples,Python,Sorting,Tuples,我正在研究一个关于元组的有点噱头的问题,最终解决了它。。。但我觉得我的代码真的很难看。有没有比这更简单的方法?基本上,这个问题给出了一个元组,您需要对元组进行排序,从同一元组中删除数字,然后创建这样的输出 输出=[这句话,现在应该有意义了] 一开始,你有 t=[(4,'make'),(1,'sentence'),(0,'this'),(3,'now'),(5,'sense'),(2,'should')] 我的解决方案 t=[(4,'make'),(1,'sentence'),(0,'this
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]
这很简单:
sentence = [(4,'make'),(1,'sentence'),(0,'this'),(3,'now'),(5,'sense'),(2,'should')]
print "[%s]" % ', '.join(word for _,word in sorted(sentence))
这里有几点需要注意:
A用作连接的参数。语法与for相同
我们迭代元组的排序列表,并使用u表示我们不需要元组的第一个值(数字),而只需要单词的第二部分
A用于构建最后一个字符串,其周围有[]。我们也可以在这里使用,但我认为在这个例子中这样看起来更干净
正确答案的替代方案:
>>> 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']
如果您确实想要一个列表而不是一个看起来像列表的字符串…+1。解释:元组的默认排序顺序是。@larsmans:我想他已经理解了,因为他在原始代码中使用了这个特性,too@user1142285:别这样。这里涉及的构造需要一些习惯来有效地应用它们。我添加了一个小的解释,以防你想知道它是如何工作的。此外,如果您愿意,也可以接受此答案:@user1142285:您是否考虑过通过单击勾选按钮接受此答案?您知道某些_字符串.join[single_element]等同于single_element?