Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带有for循环的排序列表_Python_Python 3.x_List_Sorting - Fatal编程技术网

Python 带有for循环的排序列表

Python 带有for循环的排序列表,python,python-3.x,list,sorting,Python,Python 3.x,List,Sorting,我无法按特定顺序对列表进行排序。我创建了3个元组并将它们转换成一个列表。我希望所有3个元组中的汽车颜色都在[1]索引中,而不是最后一个。我以为这样行,但它只是按相同的顺序打印列表 由于tuple在python中是不可变的,所以应该创建新的tuple allMyCars = [(car[0], car[3], car[1], car[2]) for car in allMyCars] 试试这个,我想: myCar = (2004, 'Ford', 'Mustang', 'green')

我无法按特定顺序对列表进行排序。我创建了3个元组并将它们转换成一个列表。我希望所有3个元组中的汽车颜色都在[1]索引中,而不是最后一个。我以为这样行,但它只是按相同的顺序打印列表

由于
tuple
在python中是不可变的,所以应该创建新的tuple

allMyCars = [(car[0], car[3], car[1], car[2]) for car in allMyCars]
试试这个,我想:

myCar = (2004, 'Ford', 'Mustang', 'green')    
myCar2 = (2014, 'Ford', 'Fusion', 'white')    
myCar3 = (1998, 'Chevrolet', 'S10', 'brown')

allMyCars = list((myCar, myCar2, myCar3))
for car in allMyCars:
    *rest, color = car
    newCar = (color, *rest)
    print(newCar)

# Output:
('green', 2004, 'Ford', 'Mustang')
('white', 2014, 'Ford', 'Fusion')
('brown', 1998, 'Chevrolet', 'S10')
或者

根据评论进行编辑:

allMyCars = [(year, color, *rest) for year, *rest, color in allMyCars]

#or

for car in allMyCars:
    year, *rest, color = car
    newCar = (year, color, *rest)
    print(newCar)

Python中的元组是不可变的。此处不允许插入。要做到这一点,你需要列一个清单。或者,您应该将
myCar
变量作为列表

myCar = [2004, 'Ford', 'Mustang', 'green']  
myCar2 = [2014, 'Ford', 'Fusion', 'white']    
myCar3 = [1998, 'Chevrolet', 'S10', 'brown']
allMyCars = [myCar, myCar2, myCar3]
for i in allMyCars:
    i.insert(1, i[-1])
    i.pop()
最后一个
i.pop()
是必需的,因为插入已完成,但列表末尾仍包含颜色(颜色元素的重复)。所以,它必须被弹出。在运行上述代码段后,输出为

[[2004, 'green', 'Ford', 'Mustang'],
 [2014, 'white', 'Ford', 'Fusion'],
 [1998, 'brown', 'Chevrolet', 'S10']]

你认为len(i)==5什么时候会成为真的?我在另一篇帖子上看到了,我想它会有用的。几周前我刚开始学习python。你有什么建议?好吧,在你的问题中,你说“我认为这会起作用”,所以我建议编辑这个问题,解释一下为什么你认为它会起作用——否则很难知道答案的目标是什么。根据你的理解水平,解释你的问题是什么以及如何解决可能需要一句话或者更长的时间。因此,为了得到对您有用的答案,您需要更加具体。
对于allMyCars[:]:
中的i,每次通过循环,
i
将是实际的car元组之一,而不是整数。
[[2004, 'green', 'Ford', 'Mustang'],
 [2014, 'white', 'Ford', 'Fusion'],
 [1998, 'brown', 'Chevrolet', 'S10']]