首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何知道字符串是否属于python中字符串列表的组合?

如何知道字符串是否属于python中字符串列表的组合?
EN

Stack Overflow用户
提问于 2019-10-31 12:43:53
回答 4查看 90关注 0票数 1

我有复杂的列表列表,…的唯一字符串如下:

代码语言:javascript
复制
L = [['A'],[['B','C'],['D'],[['E'],['F','G']]]]

我想知道特定的字符串是否属于L。

让我们举一个简单的例子:

代码语言:javascript
复制
L = [['A'],[['B'],['C']]]

我想知道'B‘是否在L中(不是列表'B’,而是字符串'B')。我该怎么做?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-10-31 13:04:18

在您的情况下,搜索将更容易,如果您夷平原来的列表。

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2019-10-31 13:00:45

利用递归。

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2019-10-31 14:01:12

较短的递归解决方案:

代码语言:javascript
复制
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'))

输出:

代码语言:javascript
复制
True
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58643625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档