在Python程序中,我有一个元组列表:
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')]]它有三个主要组成部分:
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']。
我该如何解决这个问题?
发布于 2021-09-16 14:11:36
您希望将函数应用于列表x的每个元素,并返回结果列表。
这可以通过列表理解或map来完成。
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’。
您可以使用all和any来检查集合中的所有元素或所有元素是否满足一个条件:
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',这是我们感兴趣的元素。
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']https://stackoverflow.com/questions/69209608
复制相似问题