在python中使用min/max函数比较两个浮点值元素列表
我使用min函数对以下两个列表进行元素比较,以获得每对的min值:在python中使用min/max函数比较两个浮点值元素列表,python,list,Python,List,我使用min函数对以下两个列表进行元素比较,以获得每对的min值: a = [1915.2322937926342, 2986.621770760078] b = [2563.0, -4320.21030101545] min(a,b) Out[123]: [1915.2322937926342, 2986.621770760078] 我希望输出为: [1915.2322937926342, -4320.21030101545] 我尝试了一个简单的示例来确保max函数正常工作: a =
a = [1915.2322937926342, 2986.621770760078]
b = [2563.0, -4320.21030101545]
min(a,b)
Out[123]: [1915.2322937926342, 2986.621770760078]
我希望输出为:
[1915.2322937926342, -4320.21030101545]
我尝试了一个简单的示例来确保max函数正常工作:
a = [1, 3]
b = [2, -1000]
min(a, b) = [1, -1000]
有人能告诉我为什么min函数在我的第一个示例中不起作用吗?非常感谢 您可以使用:
lists = [[1915.2322937926342, 2986.621770760078], [2563.0, -4320.21030101545]]
output = []
for l in lists:
output.append(min(l))
print(output)
# [1915.2322937926342, -4320.21030101545]
或使用列表理解:
lists = [[1915.2322937926342, 2986.621770760078], [2563.0, -4320.21030101545]]
print([min(l) for l in lists])
# [1915.2322937926342, -4320.21030101545]
您可以使用:
lists = [[1915.2322937926342, 2986.621770760078], [2563.0, -4320.21030101545]]
output = []
for l in lists:
output.append(min(l))
print(output)
# [1915.2322937926342, -4320.21030101545]
或使用列表理解:
lists = [[1915.2322937926342, 2986.621770760078], [2563.0, -4320.21030101545]]
print([min(l) for l in lists])
# [1915.2322937926342, -4320.21030101545]
我建议使用
zip()
,因为这正是它的用例:
>a=[1,6]
>>>b=[4,2]
>>>[邮政编码(a、b)中tup的最小值(tup)]
[1, 2]
为了进一步解释为什么这是zip
的完美用例:
>x=[4,8,8,7,3,1,9,6,9,4]
>>>y=[7,4,9,3,3,8,9,9,6,9]
>>>[*zip(x,y)]
[(4, 7), (8, 4), (8, 9), (7, 3), (3, 3), (1, 8), (9, 9), (6, 9), (9, 6), (4, 9)]
zip()
函数对传入的任意数量的ITerable中的每个元素进行配对:
z=[10,5,1,2,9,7,0,4,4,1]
>>>[*zip(x,y,z)]
[(4, 7, 10), (8, 4, 5), (8, 9, 1), (7, 3, 2), (3, 3, 9), (1, 8, 7), (9, 9, 0), (6, 9, 4), (9, 6, 4), (4, 9, 1)]
您尝试执行的操作背后的整个机制都内置于
zip()
函数中。我建议使用zip()
,因为这正是它的用例:
>a=[1,6]
>>>b=[4,2]
>>>[邮政编码(a、b)中tup的最小值(tup)]
[1, 2]
为了进一步解释为什么这是zip
的完美用例:
>x=[4,8,8,7,3,1,9,6,9,4]
>>>y=[7,4,9,3,3,8,9,9,6,9]
>>>[*zip(x,y)]
[(4, 7), (8, 4), (8, 9), (7, 3), (3, 3), (1, 8), (9, 9), (6, 9), (9, 6), (4, 9)]
zip()
函数对传入的任意数量的ITerable中的每个元素进行配对:
z=[10,5,1,2,9,7,0,4,4,1]
>>>[*zip(x,y,z)]
[(4, 7, 10), (8, 4, 5), (8, 9, 1), (7, 3, 2), (3, 3, 9), (1, 8, 7), (9, 9, 0), (6, 9, 4), (9, 6, 4), (4, 9, 1)]
您尝试执行的操作背后的整个机制都内置于
zip()
函数中。min函数一次只能传递一个iterable。您需要将列表中的每个项目配对在一起,然后获取最小值
a = [1, 3]
b = [2, -1000]
combined_mins = [min([x,y]) for x,y in zip(a,b)]
这将返回1和-1000最小函数一次只能传递一个iterable。您需要将列表中的每个项目配对在一起,然后获取最小值
a = [1, 3]
b = [2, -1000]
combined_mins = [min([x,y]) for x,y in zip(a,b)]
这将返回1和-1000您实际上并不是在按元素对列表元素
min(a,b)
在这种情况下,字面意思是说a
和b
的整个列表中哪一个是最低的,它通过分别比较每个列表中的每个元素来做到这一点。自1915.2322937926342<2563.0以来,Python不需要再向前看,就可以确定整个列表a
比列表b
小。(在平局中,例如:[0,0,1]
和[0,0,-1]
-一旦看到最后一个-1-它就可以确定-1小于1,从而可以得出哪个列表不等于另一个列表以及在哪个方向)。请注意,类似于[0,0,0]
[0,0,0]
的内容将返回False
您需要使用zip
对列表中的项目进行显式配对,然后取其中的min
,例如:
result = [min(els) for els in zip(a, b)]
这会给你:[1915.2322937926342,-4320.2103010545]
请参阅:您实际上并不是在按元素配对列表元素
min(a,b)
在这种情况下,字面意思是说a
和b
的整个列表中哪一个是最低的,它通过分别比较每个列表中的每个元素来做到这一点。自1915.2322937926342<2563.0以来,Python不需要再向前看,就可以确定整个列表a
比列表b
小。(在平局中,例如:[0,0,1]
和[0,0,-1]
-一旦看到最后一个-1-它就可以确定-1小于1,从而可以得出哪个列表不等于另一个列表以及在哪个方向)。请注意,类似于[0,0,0]
[0,0,0]
的内容将返回False
您需要使用zip
对列表中的项目进行显式配对,然后取其中的min
,例如:
result = [min(els) for els in zip(a, b)]
这会给你:[1915.2322937926342,-4320.2103010545]
请参阅:这不是OP想要的。快速计数器示例:让
x=[1,2]
和y=[0,1]
。预期的输出是[0,1]
,但这会返回[1,0]
,因为您不是在按元素比较两个列表,而是简单地从每个列表中获取min
。“我预期的输出是:[1915.232297926342,-4320.2103010545]
lol仅仅因为它在一种情况下做了您想要的事情,并不意味着它在一般情况下成立,我的反例清楚地证明了这一点。OP想要元素最小值,但你的方法没有做到。这并不是OP想要的。快速计数器示例:让x=[1,2]
和y=[0,1]
。预期的输出是[0,1]
,但这会返回[1,0]
,因为您不是在按元素比较两个列表,而是简单地从每个列表中获取min
。“我预期的输出是:[1915.232297926342,-4320.2103010545]
lol仅仅因为它在一种情况下做了您想要的事情,并不意味着它在一般情况下成立,我的反例清楚地证明了这一点。OP想要元素最小值,但你的方法没有做到。这并不是OP想要的。快速计数器示例:让x=[1,2]
和y=[0,1]
。预期的输出是[0,1]
,但这将返回[1,0]
,因为您不是按元素比较两个列表,而是简单地从