【问题标题】:Sort and Print Nested String in Python在 Python 中排序和打印嵌套字符串
【发布时间】:2017-07-31 17:02:33
【问题描述】:

这是我的代码。我将列表中的项目分开并打印出来:

mylist = [["Orange", "Banana"], ["Grape", "Orange", "Apple"]]

for s in mylist:
print '\n'.join(s)

Orange
Banana
Apple
Grape
Orange

但我希望列表按字母顺序排列。我试过这个,但它只对它们巢中的物品进行排序:

for s in mylist:
print '\n'.join(sorted(s))

Banana
Orange
Apple
Grape
Orange

如何将嵌套列表中的项目一起打印和排序?

【问题讨论】:

标签: python list sorting printing


【解决方案1】:

基本上它结合了展平和排序。扁平化在此处以各种方式处理:Making a flat list out of list of lists in Python。排序是内置的。

我的版本:

链使用itertools.chain然后排序:

import itertools

for i in sorted(itertools.chain.from_iterable(mylist)):
    print(i)

或者没有itertools,生成一个列表解析(它的好处是将list 传递给sorted,所以sorted 不需要强制迭代):

for i in sorted([x for sl in mylist for x in sl]):
    print(i)

(不过,最有效的方法可能是sorted(list(itertools.chain.from_iterable(mylist)))

【讨论】:

  • 第二个选项不需要内部列表理解。 sorted 可以接受生成器表达式:sorted(x for sl in mylist for x in sl)
  • 不需要,但它更快,因为否则sorted 必须迭代以构建列表并且迭代很慢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
  • 2017-03-09
  • 1970-01-01
  • 2021-12-02
  • 2012-12-12
  • 2016-01-20
  • 1970-01-01
相关资源
最近更新 更多