【问题标题】:How to iterate through letters in a list如何遍历列表中的字母
【发布时间】:2022-11-14 01:53:08
【问题描述】:

我正在尝试遍历列表中的所有字母,尽管我没有取得太大进展。

前任:

L = ["pizza","burger","shawarma","nuggets"]

程序应该输出

p b s n
i u h u
z r a g

依此类推,基本上是通过索引来迭代单词。

我尝试通过这样的 for 循环来做到这一点:

newlist = [i[0] for i in a]

它只输出列表中的第一个字母。 如果可能的话,我想知道如何迭代它以拥有所有索引。

【问题讨论】:

    标签: python


    【解决方案1】:

    尝试这个:

    >>> list(zip(*lst))
    [('p', 'b', 's', 'n'),
     ('i', 'u', 'h', 'u'),
     ('z', 'r', 'a', 'g'),
     ('z', 'g', 'w', 'g'),
     ('a', 'e', 'a', 'e')]
    
    # If you want a string with space between chars use "' '.join"
    >>> list(map(' '.join, zip(*lst)))
    ['p b s n', 'i u h u', 'z r a g', 'z g w g', 'a e a e']
    

    解释:

    # convert string to list of chars
    >>> [list(l) for l in lst]
    [['p', 'i', 'z', 'z', 'a'],
     ['b', 'u', 'r', 'g', 'e', 'r'],
     ['s', 'h', 'a', 'w', 'a', 'r', 'm', 'a'],
     ['n', 'u', 'g', 'g', 'e', 't', 's']]
    #  ^ ,  ^ ,  ^,   ^ ,  ^  <- we need 'zip'
    
    # Now we need 'zip' for gathering ('p', 'b', 's', 'n') ,  ...
    >>> list(zip(*(list(l) for l in lst)))
    [('p', 'b', 's', 'n'),
     ('i', 'u', 'h', 'u'),
     ('z', 'r', 'a', 'g'),
     ('z', 'g', 'w', 'g'),
     ('a', 'e', 'a', 'e')]
    

    【讨论】:

    • list(zip(*lst)) 也有效,因为 zip 接受可迭代对象,而字符串是可迭代对象。
    【解决方案2】:

    无需在单词上使用 list - 遍历字符串会产生单个字符:

    >>> food = ["pizza","burger","shawarma","nuggets"]
    
    >>> for line in (' '.join(row) for row in zip(*food)):
    ...     print(line)
    ...
    p b s n
    i u h u
    z r a g
    z g w g
    a e a e
    

    如果你需要使用最长的单词长度,你可以使用itertools.zip_longest

    >>> from itertools import zip_longest
    
    >>> for row in zip_longest(*food, fillvalue=' '):
    ...     print(' '.join(row))
    ...
    p b s n
    i u h u
    z r a g
    z g w g
    a e a e
      r r t
        m s
        a
    

    【讨论】:

      猜你喜欢
      • 2013-06-15
      • 2017-10-10
      • 2015-05-31
      • 2013-05-23
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 2012-11-23
      相关资源
      最近更新 更多