有没有办法缩短这种插入排序

Is there a way to shorten this insetion 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])

我想缩短它以便第二部分更清晰,但我似乎找不到可行的方法。

我们可以看到您的合并列表中偶数索引处的元素由 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)

这个怎么样?

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]]

您可以先创建一个新变量并将其赋值为list_0。我们这样做是为了不改变 list_0。然后使用循环,每2个元素插入list_1的元素。

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 的原因是因为在迭代开始时,一个新元素将被添加到 merged_list。

您可以将它们压缩在一起。不需要循环。

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))

使用列表理解:

[item for t in [(list_0[i], list_1[i]) for i in range(len(list_0))] for item in t]