【问题标题】:Python: Joining Multiple Lists to one single SentencePython:将多个列表连接到一个句子中
【发布时间】:2010-10-28 10:26:49
【问题描述】:

您好,我有多个列表。例如:

[u'This/ABC']
[u'is/ABC']
[u'not/ABC']
[u'even/ABC']
[u'close/ABC']
[u'to/ABC']
[u'funny/ABC']
[u'./ABC']

[u'O/ABC']
[u'noez/ABC']
[u'!/ABC']

我需要加入这个列表来

This/ABC is/ABC not/ABC even/ABC close/ABC to/ABC funny/ABC ./ABC

O/ABC noez/ABC !/ABC

请问我该怎么做?是的,中间有空格!

【问题讨论】:

  • ./ABC 和 0/ABC 之间有一个新行是故意的吗?

标签: python list join


【解决方案1】:

如果你把它们都放在一个列表中,例如这样:

a = [
    [u'This/ABC'],
    [u'is/ABC'],
    ...
]

您可以通过添加所有列表并在结果上使用常规连接来获得结果:

result = ' '.join(sum(a, []))

在重新阅读问题几次之后,我想你也想要那个空行。这几乎是一样的。添加:

b = [
    [u'O/ABC'],
    [u'HAI/ABC'],
    ...
]

lines = [a, b]

result = '\n\n'.join([' '.join(sum(line, [])) for line in lines])

【讨论】:

    【解决方案2】:

    加入列表,试试itertools模块中的chain函数,例如可以试试

    import itertools
    print ' '.join(itertools.chain(mylist))
    

    如果两个列表之间的新行是有意的,则在第一个列表的末尾添加'\n'

    import itertools
    a = [[u'This/ABZ'], [u'is/ABZ'], ....]
    b = [[u'O/ABZ'], [u'O/noez'], ...]
    a.append('\n')
    
    print ' '.join(itertools.chain(a + b))
    

    【讨论】:

      【解决方案3】:

      简单:

      x = [[u'O/ABC'], [u'noez/ABC'], [u'!/ABC']] 
      print ' '.join(y[0] for y in x)
      

      【讨论】:

      • 我觉得这样更好,很清楚,不需要你加载另一个模块。顺便说一句,我认为你已经有了 x(列表列表)
      【解决方案4】:

      如果您将所有列表放在一个列表中,您可以这样做:

      ' '.join(e[0] for e in [[u'This/ABC'], [u'is/ABC']])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-20
        • 2018-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多