我有复杂的列表列表,…的唯一字符串如下:
L = [['A'],[['B','C'],['D'],[['E'],['F','G']]]]我想知道特定的字符串是否属于L。
让我们举一个简单的例子:
L = [['A'],[['B'],['C']]]我想知道'B‘是否在L中(不是列表'B’,而是字符串'B')。我该怎么做?
谢谢
发布于 2019-10-31 13:04:18
在您的情况下,搜索将更容易,如果您夷平原来的列表。
import collections
def flatten(l):
for el in l:
if isinstance(el, collections.Iterable) and not isinstance(el, (str, bytes)):
yield from flatten(el)
else:
yield el
flatten_L = list(flatten(L))
if 'B' in flatten_L:
print(True)
else:
print(False)发布于 2019-10-31 13:00:45
利用递归。
def is_present(string_to_check, nested_list):
output = False
for element in nested_list:
if isinstance(element, list):
output = output or is_present(string_to_check, element)
else:
output = output or string_to_check in element
return output发布于 2019-10-31 14:01:12
较短的递归解决方案:
def exists(d, t):
return any(i == t if not isinstance(i,list) else exists(i, t) for i in d)
L = [['A'],[['B'],['C']]]
print(exists(L, 'B'))输出:
Truehttps://stackoverflow.com/questions/58643625
复制相似问题