我是python新手。我有三个相同长度的浮动列表。数字随机分布在所有列表中。但是一个列表中元素的位置对应于其他列表中相同位置的其他元素。假设名单是
a=[1,5,3,2,4]
b=[20,30,50,40,10]
c=[400,500,100,300,200]
现在,这三个列表中相同位置的元素相互对应。例如1、20和400相互对应;3、50和100相互对应,以此类推。
我必须以这样一种方式排列数字:对于这三个列表中的任何位置I,如果相应的数字之和大于,那么这三个数字应该首先出现在列表中。比如,
e=[500, 400, 300, 200, 100]
f=[30,20,40,10,50]
g=[5,1,2,4,3]
所以相应数字的位置完全改变了。否则他们的通信不能中断。作为一个初学者,我试过很多方法,但都是徒劳的。请帮帮我。你知道吗
可以将列表的值排序为:
作为原始问题的答案(预编辑)
试试这个。你知道吗
输出
使用
zip
创建一个tuples
列表,然后使用它们的和作为键对它们进行排序,使最大的和排在第一位。如果您使用的是python2.7,那么可以使用izip
而不是zip
来减轻大型列表的内存负担,但是仍然需要创建完整的排序列表。在python中,3zip
相当于2.7的izip
。你知道吗sorted
函数将返回元组列表,因此现在需要将它们转换回原来的3列表格式。最快最干净的方法(由@JohnClements提供)。你知道吗要解释这个语句,请记住x是一个长度为3的
tuples
列表。你知道吗tuples
(使用表达式*x
)。这将产生一个包含3tuples
的新列表。第一个tuple
包含x中元组的所有第一个元素,第二个tuple
包含x中的所有第二个元素,依此类推。你知道吗tuples
列表,但是我们希望iterable包含lists
,因此map
是执行转换的正确函数。这将是快速的,因为它执行转换在本机c代码。结果是list
的list
list
的lists
解压为3个独立的列表变量e
、f
和g
。你知道吗如果您需要更详细地了解代码,我建议您在中间阶段打印输出。你知道吗
相关问题 更多 >
编程相关推荐