首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查集合中的某些值是否满足Python中的特定条件

检查集合中的某些值是否满足Python中的特定条件
EN

Stack Overflow用户
提问于 2021-09-16 13:46:10
回答 1查看 172关注 0票数 2

在Python程序中,我有一个元组列表:

代码语言:javascript
运行
复制
x = [[(frozenset({(5, 'Y')}), 5, 'Y')],
     [(frozenset({(9, 'Y'), (2, 'Y'), (7, 'N'), (3, 'Y')}), 2, 'Y'),
      (frozenset({(4, 'Y'), (0, 'Y'), (8, 'N'), (1, 'Y')}), 4, 'Y'),
      (frozenset({(9, 'Y'), (2, 'Y'), (7, 'N'), (3, 'Y')}), 3, 'Y')],
     [(frozenset({(9, 'Y'), (2, 'Y'), (7, 'N'), (3, 'Y')}), 7, 'N'),
      (frozenset({(4, 'Y'), (0, 'Y'), (8, 'N'), (1, 'Y')}), 8, 'N')]]

它有三个主要组成部分:

代码语言:javascript
运行
复制
x[0] = [[(frozenset({(5, 'Y')}), 5, 'Y')]
x[1] = [(frozenset({(9, 'Y'), (2, 'Y'), (7, 'N'), (3, 'Y')}), 2, 'Y'), (frozenset({(4, 'Y'), (0, 'Y'), (8, 'N'), (1, 'Y')}), 4, 'Y'), (frozenset({(9, 'Y'), (2, 'Y'), (7, 'N'), (3, 'Y')}), 3, 'Y')];
x[2] = [(frozenset({(9, 'Y'), (2, 'Y'), (7, 'N'), (3, 'Y')}), 7, 'N'), (frozenset({(4, 'Y'), (0, 'Y'), (8, 'N'), (1, 'Y')}), 8, 'N')]].

大小不同。我想检查三个列表中的所有最后组件是否满足特定条件:如果所有组件都是‘Y’'N',如果所有组件都是'N';或者‘U’E 211是否存在某些E 112‘Y’E 213,以及每个组件中是否存在一些E114/code>‘N’E215。在本例中,结果应该类似于:['Y', 'Y', 'N']

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-16 14:11:36

您希望将函数应用于列表x的每个元素,并返回结果列表。

这可以通过列表理解或map来完成。

代码语言:javascript
运行
复制
def f(e):
  return 2*e

x = [1,2,3]

print([f(e) for e in x])
# [2, 4, 6]

print(list(map(f, x)))
# [2, 4, 6]

现在您所要做的就是为您的问题编写这个函数f:这里e是一个三胞胎列表,f应该检查三胞胎的所有第三个元素是'Y‘还是'N’。

您可以使用allany来检查集合中的所有元素或所有元素是否满足一个条件:

代码语言:javascript
运行
复制
collection = [2, 4, 6, 9]
print(all(n % 2 == 0 for n in collection))
# False

collection = [2, 4, 6, 8]
print(all(n % 2 == 0 for n in collection))
# True

现在,每个子列表e of x中的元素是三重奏(包含3个元素的元组)。三胞胎的第一个元素是一个冷藏箱,我们不关心它。三重奏的第二个元素是一个我们不关心的数字。三重奏的第三个元素是'Y‘或'N',这是我们感兴趣的元素。

代码语言:javascript
运行
复制
def f(e):
  all_y = all(letter=='Y' for frozen,number,letter in e)
  all_n = all(letter=='N' for frozen,number,letter in e)
  lil_bit_o_both = (not all_y) and (not all_n)
  return 'Y' if all_y else ('N' if all_n else 'U')

x = [[(frozenset({(5, 'Y')}), 5, 'Y')],
     [(frozenset({(9, 'Y'), (2, 'Y'), (7, 'N'), (3, 'Y')}), 2, 'Y'),
      (frozenset({(4, 'Y'), (0, 'Y'), (8, 'N'), (1, 'Y')}), 4, 'Y'),
      (frozenset({(9, 'Y'), (2, 'Y'), (7, 'N'), (3, 'Y')}), 3, 'Y')],
     [(frozenset({(9, 'Y'), (2, 'Y'), (7, 'N'), (3, 'Y')}), 7, 'N'),
      (frozenset({(4, 'Y'), (0, 'Y'), (8, 'N'), (1, 'Y')}), 8, 'N')]]

result = list(map(f, x))
print(result)
# ['Y', 'Y', 'N']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69209608

复制
相关文章

相似问题

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