Python 如何在元组的元组中获取max元素?

Python 如何在元组的元组中获取max元素?,python,Python,如何获得元组中所有元素的最大值 例如: x = ((3, 4, 5), (4.5, 5.5, 6.5), (-1, 0, 1, 10)) # want 10 您可以为循环使用嵌套的: In [9]: max(n for s in x for n in s) Out[9]: 10 要展平任意嵌套列表,可以使用递归函数: def flatten(lst): for item in lst: if isinstance(item, (tuple, list)):

如何获得元组中所有元素的最大值

例如:

x = ((3, 4, 5), (4.5, 5.5, 6.5), (-1, 0, 1, 10))
# want 10

您可以为循环使用嵌套的

In [9]: max(n for s in x for n in s)
Out[9]: 10
要展平任意嵌套列表,可以使用递归函数:

def flatten(lst):
    for item in lst:
        if isinstance(item, (tuple, list)):
            for result in flatten(item):
                yield result
        else:
            yield item

您可以为
循环使用嵌套的

In [9]: max(n for s in x for n in s)
Out[9]: 10
要展平任意嵌套列表,可以使用递归函数:

def flatten(lst):
    for item in lst:
        if isinstance(item, (tuple, list)):
            for result in flatten(item):
                yield result
        else:
            yield item

使用
itertools.chain
max()

或使用
链。从\u iterable

In [97]: max(chain.from_iterable(x))
Out[97]: 10
创建平面列表:

In [101]: list(chain.from_iterable(x))
Out[101]: [3, 4, 5, 4.5, 5.5, 6.5, -1, 0, 1, 10]

In [102]: list(chain(*x))
Out[102]: [3, 4, 5, 4.5, 5.5, 6.5, -1, 0, 1, 10]
与其他替代方法相比,这些
itertools
方法是高效的


相关:

使用
itertools.chain
max()

或使用
链。从\u iterable

In [97]: max(chain.from_iterable(x))
Out[97]: 10
创建平面列表:

In [101]: list(chain.from_iterable(x))
Out[101]: [3, 4, 5, 4.5, 5.5, 6.5, -1, 0, 1, 10]

In [102]: list(chain(*x))
Out[102]: [3, 4, 5, 4.5, 5.5, 6.5, -1, 0, 1, 10]
与其他替代方法相比,这些
itertools
方法是高效的


相关:

沿着嵌套for循环的线条,还有一个选项:

max(max(i) for i in x)

沿着嵌套for循环的行,还有一个选项:

max(max(i) for i in x)
如果你是一个什么时候我能做什么的人,我建议:

>>> x = ((3, 4, 5), (4.5, 5.5, 6.5), (-1, 0, 1, 10))
>>> max(max(t) for t in x)
10
要展平元组中的元组,请执行以下操作:

>>> tuple(elem for t in x for elem in t)
(3, 4, 5, 4.5, 5.5, 6.5, -1, 0, 1, 10)

如果你是一个什么时候我能做什么的人,我建议:

>>> x = ((3, 4, 5), (4.5, 5.5, 6.5), (-1, 0, 1, 10))
>>> max(max(t) for t in x)
10
要展平元组中的元组,请执行以下操作:

>>> tuple(elem for t in x for elem in t)
(3, 4, 5, 4.5, 5.5, 6.5, -1, 0, 1, 10)


您可以将元组转换为包含所有元素的单个元组,然后对其进行迭代(或使用内置方法max()。这也回答了您关于如何“展平”元组的问题

a_tuple = ((1, 2, 3), (5, 6, 7), (8, 9))

tuple_to_string = str(a_tuple)
将其转换为字符串后,删除“(“,”)和任何空格“”,然后使用join将其转换为单个列表,然后使用tuple()将其转换回tuple

altered_string = tuple_to_string.replace("(", "").replace(")", "").replace(" ", "")
>> "1,2,3,5,6,7,8,9"
flattened_tuple = tuple(altered_string.split(","))
>> ('1', '2', '3', '5', '6', '7', '8', '9')
在一行中,然后:

flattened_tuple = tuple(str(a_tuple).replace("(", "").replace(")", "").replace(" ", "").split(","))
>> ('1', '2', '3', '5', '6', '7', '8', '9')
要查找最大的数字,请使用:

max(flattened_tuple)
>> 9

请注意,这样做会将元组中的任何元素转换为字符串。如果您希望它们的输出相同,则必须进一步格式化。不过,仅出于此目的,这就可以了。

您可以将元组转换为包含所有元素的单个元组,然后对其进行迭代(或使用内置方法max()。这也回答了您关于如何“展平”元组的问题

a_tuple = ((1, 2, 3), (5, 6, 7), (8, 9))

tuple_to_string = str(a_tuple)
将其转换为字符串后,删除“(“,”)和任何空格“”,然后使用join将其转换为单个列表,然后使用tuple()将其转换回tuple

altered_string = tuple_to_string.replace("(", "").replace(")", "").replace(" ", "")
>> "1,2,3,5,6,7,8,9"
flattened_tuple = tuple(altered_string.split(","))
>> ('1', '2', '3', '5', '6', '7', '8', '9')
在一行中,然后:

flattened_tuple = tuple(str(a_tuple).replace("(", "").replace(")", "").replace(" ", "").split(","))
>> ('1', '2', '3', '5', '6', '7', '8', '9')
要查找最大的数字,请使用:

max(flattened_tuple)
>> 9

请注意,这样做会将元组中的任何元素转换为字符串。如果您希望它们的输出相同,则必须进一步格式化。不过,仅出于此目的,这就可以了。

作为相关信息,我如何才能将列表展平,例如
展平(x)=(3,4,5,4.5,5.5,6.5,-1,0,1,10)
?作为相关信息,我如何将列表展平,例如
展平(x)=(3,4,5,4.5,5,6.5,-1,1,10)
?Python文档建议我们更喜欢使用
itertools
进行扁平化,而不是使用
sum
@AshwiniChaudhary建议是因为
itertools.chain
返回一个生成器,而不是创建一个新的列表/元组。如果你要从中列出一个
列表
,两个选项几乎相同。不,它们不一样,
itertools.chain
chain.from\u iterable
与生成器表达式和
sum
相比效率更高。Python文档建议我们更喜欢
itertools
进行扁平化,而不是使用
sum
@AshwiniChaudhary建议是因为
itertools.chain
返回一个生成器,而不是创建一个新的列表/元组。如果要从中创建一个
列表
,这两个选项几乎是一样的。不,它们不一样,
itertools.chain
chain.from\u iterable
与生成器表达式和
sum
相比效率很高。