提前感謝您的幫助。
我有一個嵌套串列/串列串列,只有當串列包含特定元素時,我才需要將每個串列回傳到螢屏。
榜單特點:
- 每個串列都有相同數量的元素,
- 每個元素代表相同的事物
- 在下面的例子
index 0 = fruit name, index 1 = amount, index 2 = colour中。 - 例子:
lists = [banana, 10, yellow], [apple, 12, red], [pear, 60, green], [mango, 5, yellow]
我玩過條件 for 回圈,并想為每個變體創建一個新串列,但這似乎是一個難以管理的解決方案。
任何人都可以幫忙嗎?
搜索1:如果'banana'在一個或多個嵌套串列中然后列印每個嵌套串列
預期輸出:[香蕉,10,黃色]
搜索2:如果'yellow'在一個或多個嵌套串列中然后列印每個嵌套串列
預期輸出:[香蕉,10,黃色] [芒果,5,黃色]
uj5u.com熱心網友回復:
這是一個粗略的方法:
lists = [
["banana", 10, "yellow"],
["apple", 12, "red"],
["pear", 60, "green"],
["mango", 5, "yellow"],
]
keyword = 'banana'
for lst in lists:
if keyword in lst:
print(lst)
keyword = 'yellow'
for lst in lists:
if keyword in lst:
print(lst)
理想情況下,您會將搜索提取到接受串列和關鍵字的函式:
def get_sublists_containing_keyword(lists, keyword):
sublists = []
for lst in lists:
if keyword in lst:
sublists.append(lst)
return sublists
lists = [
["banana", 10, "yellow"],
["apple", 12, "red"],
["pear", 60, "green"],
["mango", 5, "yellow"],
]
banana_lists = get_sublists_containing_keyword(lists, 'banana')
yellow_lists = get_sublists_containing_keyword(lists, 'yellow')
for banana_list in banana_lists:
print(banana_list)
for yellow_list in yellow_lists:
print(yellow_list)
uj5u.com熱心網友回復:
您可以在列印時使用inside a洗掉字串元素周圍的單引號字符:str.join(iterable)f-string
def print_lists_that_contain_search_term(lists: list[list[str | int]],
search_term: str) -> None:
print(f'{search_term = }')
print(' '.join(f'[{", ".join(map(str, lst))}]' for lst in lists if search_term in lst))
def main() -> None:
lists = [['banana', 10, 'yellow'], ['apple', 12, 'red'], ['pear', 60, 'green'], ['mango', 5, 'yellow']]
print_lists_that_contain_search_term(lists, 'banana')
print_lists_that_contain_search_term(lists, 'yellow')
if __name__ == '__main__':
main()
輸出:
search_term = 'banana'
[banana, 10, yellow]
search_term = 'yellow'
[banana, 10, yellow] [mango, 5, yellow]
uj5u.com熱心網友回復:
這是一個單一的襯墊解決方案。
def search(lists, item):
return list(filter(None, map(lambda x: x if item in x else [], lists)))
現在您可以呼叫該函式并檢查它。
In [12]: lists
Out[12]:
[['banana', 10, 'yellow'],
['apple', 12, 'red'],
['pear', 60, 'green'],
['mango', 5, 'yellow']]
In [13]: search(lists, 'banana')
Out[13]: [['banana', 10, 'yellow']]
In [14]: search(lists, 'yellow')
Out[14]: [['banana', 10, 'yellow'], ['mango', 5, 'yellow']]
代碼說明
在這里,我使用了 lambda 運算式并檢查了 tobe 搜索項是否在串列中,然后回傳該串列,否則回傳一個空串列。并通過過濾功能洗掉所有空串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/427449.html
標籤:Python python-3.x 列表 嵌套列表
上一篇:for回圈中的字串洗掉
