#python #insertion-sort
Вопрос:
У меня есть два списка, которые я хочу объединить в один, вот так:
list_0=[[5], [4], [4], [1], [0], [7], [8], [3], [0]]
list_1=[[0], [9], [6], [4], [5], [9], [5], [9], [3]]
mine_position=[[5], [0], [4], [9], [4], [6], [1], [4], [0], [5], [7], [9], [8], [5], [3], [9], [0], [3]]
Код, который у меня есть для их объединения, таков:
for i in row:
mine_position.append(i)
mine_position.insert(1, list_1[0])
mine_position.insert(3, list_1[1])
mine_position.insert(5, list_1[2])
mine_position.insert(7, list_1[3])
mine_position.insert(9, list_1[4])
mine_position.insert(11, list_1[5])
mine_position.insert(13, list_1[6])
mine_position.insert(15, list_1[7])
mine_position.insert(17, list_1[8])
Я хочу сократить его, чтобы вторая часть была чище, но, похоже, я не могу найти метод, который работает.
Комментарии:
1. Гарантируется ли, что списки будут иметь одинаковую длину?
Ответ №1:
Вы можете просто застегнуть их вместе. Петли не нужны.
list_0=[[5], [4], [4], [1], [0], [7], [8], [3], [0]]
list_1=[[0], [9], [6], [4], [5], [9], [5], [9], [3]]
mine_position = list(zip(list_0, list_1))
Ответ №2:
Мы видим, что элементы вашего объединенного списка по четным индексам состоят из элементов из list_0
, а нечетные индексы состоят из элементов из list_1
. Приведенный ниже фрагмент кода можно использовать для создания объединенного списка.
Фрагмент кода:
# Original Lists
list_0=[[5], [4], [4], [1], [0], [7], [8], [3], [0]]
list_1=[[0], [9], [6], [4], [5], [9], [5], [9], [3]]
# Merged List
result = []
total_elements = len(list_0) len(list_1)
# Indices of respective lists
list0_idx = list1_idx = 0
for i in range(total_elements):
if i % 2 == 0:
result.append(list_0[list0_idx])
list0_idx = 1
else:
result.append(list_1[list1_idx])
list1_idx = 1
print(result)
Ответ №3:
Как насчет этого?
list_0=[[5], [4], [4], [1], [0], [7], [8], [3], [0]]
list_1=[[0], [9], [6], [4], [5], [9], [5], [9], [3]]
merged_list = []
for i in range(0, len(list_0)):
merged_list.append(list_0[i])
merged_list.append(list_1[i])
print(merged_list)
Это показывает это.
[[5], [0], [4], [9], [4], [6], [1], [4], [0], [5], [7], [9], [8], [5], [3], [9], [0], [3]]
Ответ №4:
Сначала вы можете создать новую переменную и назначить ее как list_0. Мы делаем это так, чтобы list_0 не был изменен. Затем используйте цикл и вставляйте элемент list_1 каждые 2 элемента.
list_0=[[5], [4], [4], [1], [0], [7], [8], [3], [0]]
list_1=[[0], [9], [6], [4], [5], [9], [5], [9], [3]]
merged_list = list_0
idx = 1
for j in list_1:
merged_list.insert(idx,j)
idx = 2
print(merged_list)
#Result: [[5], [0], [4], [9], [4], [6], [1], [4], [0], [5], [7], [9], [8], [5], [3], [9], [0], [3]]
ОБРАТИТЕ внимание, что причина, по которой мы увеличиваем его на 2, заключается в том, что в начале итерации в список слияний будет добавлен новый элемент.
Ответ №5:
Использование понимания списка:
[item for t in [(list_0[i], list_1[i]) for i in range(len(list_0))] for item in t]