список сортировки с циклом for - PullRequest
0 голосов
/ 10 февраля 2020

У меня проблемы с сортировкой списка по определенному заказу. Я создал 3 кортежа и преобразовал их в список. Я хочу, чтобы цвет автомобиля во всех трех кортежах был в индексе [1] вместо последнего. Я думал, что это будет работать, но он просто печатает список в том же порядке.

Ответы [ 3 ]

1 голос
/ 10 февраля 2020

Поскольку tuple является неизменным в python, вы должны создать новые кортежи.

allMyCars = [(car[0], car[3], car[1], car[2]) for car in allMyCars]
0 голосов
/ 10 февраля 2020

Tuple в 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']]
0 голосов
/ 10 февраля 2020

Попробуйте это, я думаю:

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 = [(color, *rest) for *rest, color in allMyCars]

РЕДАКТИРОВАТЬ на основе комментариев:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...