我必须以两个包含单词的列表作为输入。使用这些单词,我使用两个单词组成一个元组,每个单词列表中的每个单词都包含相同的第一个字母。然后创建这些元组的列表并进行打印。
我有一个解决方案,但是,我似乎无法两次生产相同的产品。这是我用语言表达的一个例子。
列表A:['Jack', 'Tim', 'John', 'Ahmed']
列表B:['Julie', 'Tom', 'Henry', 'Harper']
c = input().lower()
d = input().lower()
a = c.split()
b = d.split()
x = []
for i in range(len(a)):
if a[i][0] == b[i][0]:
x.append((a[i], b[i]))
print(x)
我的输出:[('joy', 'juggle'), ('troy', 'trim')]
预期输出:[('Jack', 'Julie'), ('John', 'Julie'), ('Tim', 'Tom')]
我对语言学习还很陌生,并且无法找到与以前工作相似之处,无法找到如何在不产生相同输出的情况下通过a / b进行重复的工作。
答案 0 :(得分:1)
使用itertools.product
获取所有对,然后将其过滤掉:
In [1]: from itertools import product
In [2]: a = ['Jack', 'Tim', 'John', 'Ahmed']
In [3]: b = ['Julie', 'Tom', 'Henry', 'Harper']
In [4]: out = [i for i in product(a, b) if i[0][0] == i[1][0]]
In [5]: out
Out[5]: [('Jack', 'Julie'), ('Tim', 'Tom'), ('John', 'Julie')]
答案 1 :(得分:1)
具有列表理解力:
In [50]: a = ['Jack', 'Tim', 'John', 'Ahmed']
In [51]: b = ['Julie', 'Tom', 'Henry', 'Harper']
In [55]: c = [(x,y) for x in a for y in b if x.lower()[0]==y.lower()[0]]
In [56]: c
Out[56]: [('Jack', 'Julie'), ('Tim', 'Tom'), ('John', 'Julie')]
答案 2 :(得分:0)
您可以尝试
[(x, y) for x in A for y in B if x[0] == y[0]]