【问题标题】:How to print all possibilities of nested lists in python?如何在python中打印嵌套列表的所有可能性?
【发布时间】:2011-07-30 00:55:50
【问题描述】:

这是我的清单:

pos = [['det'], ['noun', 'adj'], ['noun'], ['vb'], ['det'], ['vb', 'noun', 'adj']]

或者

pos = ['det', ['noun', 'adj'], 'noun', 'vb', 'det', ['vb', 'noun', 'adj']]

我正在尝试打印所有组合:

det noun noun vb det vb
det adj noun vb det vb
det noun noun vb det noun
det adj noun vb det noun
det noun noun vb det adj
det adj noun vb det adj

我应该使用递归函数吗?我试过了,没有结果。

Itertools(排列、乘积、组合)对我没有帮助。

你能帮帮我吗?

【问题讨论】:

    标签: python list recursion


    【解决方案1】:

    'itertools' 确实有帮助:

    for i in itertools.product(*pos): print i
    ('det', 'noun', 'noun', 'vb', 'det', 'vb')
    ('det', 'noun', 'noun', 'vb', 'det', 'noun')
    ('det', 'noun', 'noun', 'vb', 'det', 'adj')
    ('det', 'adj', 'noun', 'vb', 'det', 'vb')
    ('det', 'adj', 'noun', 'vb', 'det', 'noun')
    ('det', 'adj', 'noun', 'vb', 'det', 'adj')
    

    【讨论】:

      【解决方案2】:

      我认为itertools.product() 实际上您正在寻找的:

      pos = [['det'], ['noun', 'adj'], ['noun'],
             ['vb'], ['det'], ['vb', 'noun', 'adj']]
      for x in itertools.product(*pos):
          print " ".join(x)
      

      打印

      det noun noun vb det vb
      det noun noun vb det noun
      det noun noun vb det adj
      det adj noun vb det vb
      det adj noun vb det noun
      det adj noun vb det adj
      

      【讨论】:

      • 你是对的,它确实有效!我不知道为什么我尝试时没有得到这个结果。无论如何,非常感谢!
      • 我有问题,当有字符串数字时,它是 2 位数字它不起作用。它还会拆分数字,这是我不想要的。知道如何解决这种行为吗?
      • @eljobso 从您的评论中,我无法理解您到底在做什么以及问题所在。我建议提出一个描述您的问题的新问题。将您的代码添加到问题中,解释预期输出并显示实际输出。
      猜你喜欢
      • 1970-01-01
      • 2012-11-26
      • 2020-07-25
      • 1970-01-01
      • 2015-08-11
      • 1970-01-01
      • 2021-01-14
      • 1970-01-01
      相关资源
      最近更新 更多