【问题标题】:How to freeze an iteration in loop for printing python如何冻结循环中的迭代以打印python
【发布时间】:2021-08-09 05:30:36
【问题描述】:

如果我有:

alphabet = ['a', 'b', 'c', 'd', ...... ]
names = ['aaron', 'adrian', 'alan', 'brian', 'cathy', 'coby' .... ] #sorted by alphabet

我怎样才能让输出看起来像:

a - aaron, adian, alan,
b - brian,
c - cathy, coby, ....
.....
.....

我试过了:

  for letter in alphabet:
       print("")
       for name in names:
            if name[0] == letter:
            print(letter, " - ", name, sep=' ', end=', ', flush=True)

但它没有工作。所以我想要一种方法来冻结“字母”,这样它就不会出现在每个名字旁边。

【问题讨论】:

  • “冻结”是什么意思
  • from itertools import groupby; 然后运行for i, j in groupby(names, key = lambda x: x[0]):print(i,'-', *j)
  • 我不知道怎么问这个问题,但如果你检查输出你就会明白我的意思
  • x 这里是字母表?
  • 没有。看看下面的答案

标签: python-3.x for-loop printing


【解决方案1】:

你可以做什么:

for letter in alphabet:
       print(letter, ' - ', end = '')
       for name in names:
            if name[0] == letter:
                print(name, sep = ', ', end = ', ')
       print()

你也可以这样做:

from itertools import groupby
for letter, names in groupby(names, key = lambda x: x[0]):
    print(letter ,'-', ', '.join(names))

【讨论】:

  • 只是一件事,第二个代码运行良好,因为它没有添加与该字母相关的列表中没有名称的字母,但第一个代码打印了字母,即使在与该字母相关的列表
猜你喜欢
  • 2016-12-21
  • 2012-06-12
  • 2012-03-12
  • 2019-12-22
  • 2020-04-26
  • 1970-01-01
  • 2020-09-21
  • 2021-07-17
  • 1970-01-01
相关资源
最近更新 更多