Учитывая список списков, как я могу создать другой конкретный вид списка

#python-3.x #list #loops

#python-3.x #Список #петли

Вопрос:

Итак, что я точно хочу сделать, так это составить список списков из другого списка списков, но этот новый список занимает позиции каждого из списков в исходном списке и создает новый.

например.

 [[5,6,3],[2,0,4],[3,8,5]]  

стал бы

 [[5,2,3],[6,0,8],[3,4,5]]  

таким образом, новый список занимает 0-ю позицию в старых списках и 1-ю позицию и так далее.

Комментарии:

1. Чтобы перевернуть список по диагонали, наиболее распространенной идиомой является list(zip(*your_list))

2. я только что попробовал это, но это просто вернуло мне список, который у меня уже был

Ответ №1:

Вы можете создавать отдельные списки, а затем объединять их в новые списки.

 list = [[5,6,3],[2,0,4],[3,8,5]]  new_list_0 = [list[i][0] for i in range(0, len(list))] new_list_1 = [list[i][1] for i in range(0, len(list))] new_list_2 = [list[i][2] for i in range(0, len(list))]  new_list = []  new_list.append(new_list_0) new_list.append(new_list_1) new_list.append(new_list_2)  print(new_list)  

Но добавление новых списков будет обременительным.

list(zip(*list)) дает список кортежей

 list_of_numbers = [[5,6,3],[2,0,4],[3,8,5]]  new_list_of_numbers = list(zip(list_of_numbers[0], list_of_numbers[1], list_of_numbers[2])) print(new_list_of_numbers)  

Выход:

 [(5, 2, 3), (6, 0, 8), (3, 4, 5)]  

Комментарии:

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