簡體   English   中英

以兩個包含單詞的列表作為輸入,以形成包含兩個單詞的元組,每個列表中的一個單詞的起始字母相同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM