【问题标题】:Cartesian product from list of Strings字符串列表中的笛卡尔积
【发布时间】:2018-04-04 16:00:11
【问题描述】:

要回答这个问题,您需要编写将产生的代码 一个字符串列表,其中包含可以进行的所有组合 通过从第一个列表中获取一个元素,从两个输入列表中获取 紧随其后的是第二个列表的一个元素(中间有一个空格)。

应该确定新列表中元素的顺序 主要是第一个列表中的排序,其次是 (对于具有相同第一部分的元素)按顺序排列 的第二个列表。 因此,如果第一个输入的形式为:A, B, .. X 第二个的形式是:1, 2, .. n 输出的形式为:
[“A 1”、“A 2”、..“An”、“B 1”、“B 2”、..“Bn”、..“X 1”、“X 2”、..“Xn” ]

(其中“..”表示中间可以有更多元素)。

注意事项: 1. 两个列表中可以有不同数量的元素。 2. 如果第一个列表有 M 个元素,第二个列表有 N 个元素, 那么输出列表应该有 M*N 个元素。

""")

print("INPUT:")
listA=[] #Creating a list
listB=[]#Creating a second list
listC=[]


while True:
        print("add element y to continue")
        if input()!='y':
            break
        else:
            print("keep adding or x to break" )
            while True:
                if input=='x':
                    break
                else:
                    input_listA = input( "Enter first comma separated list of strings: " )

                    print(n)
                    listA.append(input_listA)
                    print(input_listA)
                    print(listA)
                if input=='x':
                    break
                else:
                    input_listB=input( "Enter second comma separated list of int: " )
                    input_listB.split()
                    listB.append(input_listB)
                    break

但是,当我在笛卡尔积的计算中正确使用例如 [“black ham”、“twice mouse”、“floating cheese”、“blue elf”、“electric elf”、“floating elf”] 时是计算字符而不是像'b','l','a','c','k'这样的单词我如何在列表中制作字符串单词以及如何以我的意思不带逗号的形式打印它因为你可以看到我沿着字符串输入分隔符

【问题讨论】:

  • 你要求用逗号分隔的单词,但你从来没有分割你用逗号得到的字符串。
  • 另外请发布您实际尝试的代码。上面的代码甚至没有运行(例如它包含print(n),其中n 没有定义)
  • import itertools import re import shlex import string import them to run
  • 擦除 --> 打印(n)
  • 它运行了吗?它应该运行

标签: string list delimiter


【解决方案1】:

试试这个:

import itertools

a = input("Enter first comma separated list of strings: ")
b = input("Enter second comma separated list of strings: ")
result = []
for i in itertools.product(a.split(","), b.split(",")):
  result.append("".join(map(str, i)))

print(result)

结果:

~ $ python3 test.py
Enter first comma separated list of strings: aa,bb
Enter second comma separated list of strings: 1,2,3
['aa1', 'aa2', 'aa3', 'bb1', 'bb2', 'bb3']

如果您希望每对中的两个单词之间有一个空格,请更改

result.append("".join(map(str, i)))

result.append(" ".join(map(str, i)))

输出:

['aa 1', 'aa 2', 'aa 3', 'bb 1', 'bb 2', 'bb 3']

【讨论】:

  • 真棒解决方案谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-07-10
  • 2012-03-24
  • 2015-08-08
  • 2015-12-05
  • 1970-01-01
  • 2020-08-23
  • 1970-01-01
  • 2022-01-06
相关资源
最近更新 更多