簡體   English   中英

基於條件的兩個 Python 列表的交集

[英]Intersection of two Python lists based on condition

我想將這兩個 python 列表交集:

list_1_begin = ["i", "love", "to", "eat", "fresh", "apples", "yeah", "eat", "fresh"]
list_2_find = ["eat", "fresh"]

我的預期結果應該是這樣的:

expected result = ["0", "0", "0", "1", "1", "0", "0", "1", "1"]

這可以通過兩個 for 循環來完成,但是如果我有第一個 10000 個元素的列表和第二個 100 個元素的列表,這句話也可以重復多次。 有沒有 Pythonic 的方法?

為了保持Python的,高效的轉換list_2_find到,並使用列表理解

list_1_begin = ["i", "love", "to", "eat", "fresh", "apples", "yeah", "eat", "fresh"]
list_2_find = ["eat", "fresh"]

set_2_find = set(list_2_find)
result = [str(int(e in set_2_find)) for e in list_1_begin]
print(result)

輸出

['0', '0', '0', '1', '1', '0', '0', '1', '1']

作為將 bool 格式化為 int 的替代方法,一種方法是使用f 字符串,如下所示:

result = [f"{(e in set_2_find):d}" for e in list_1_begin]

輸出

['0', '0', '0', '1', '1', '0', '0', '1', '1']

可以在此處找到有關f 字符串格式的一些其他信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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