[英]Taking two lists as input that contain words, to form a tuple with two words, one from each list that have the same starting letter of each word
我必須將包含單詞的兩個列表作為輸入。 使用這些單詞,我使用兩個單詞組成一個元組,每個單詞列表中的每個單詞都包含相同的第一個字母。 然后創建這些元組的列表並進行打印。
我有一個解決方案,但是,我似乎無法兩次生產相同的產品。 這是我用語言表達的一個例子。
列表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進行重復的工作。
使用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')]
具有列表理解:
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')]
你可以試試這個
[(x, y) for x in A for y in B if x[0] == y[0]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.