字符串列表中的笛卡尔积

时间:2017-10-24 00:59:45

标签: string list delimiter

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

应确定新列表中元素的顺序 主要是第一个列表中的排序,其次是 (对于具有相同第一部分的元素)的排序 第二个清单。 因此,如果第一个输入的形式为:A,B,.. X.         第二个是以下形式:1,2,... n 输出的形式如下:
  [" A 1"," A 2",..." An"," B 1"," B 2&#34 ;,..." 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
  

然而,当我正确的话时,例如["黑火腿","两次鼠标","漂浮奶酪","蓝精灵&# 34;,"电子精灵","浮动精灵"]在笛卡儿积的计算中将是计算字符而不是像' b','升''一个'' C'' K'如何在列表中创建字符串单词以及如何以不带逗号的形式打印它,因为您可以看到我在字符串中输入分隔符

1 个答案:

答案 0 :(得分:2)

试试这个:

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']