首页 新闻 会员 周边 捐助

python 列表操作

-2
悬赏园豆:100 [待解决问题]

list1= [1,2,3,4,5,6,7,8,9,10]
list2= [45, 49, 62, 66, 79]
我想得到:
list3 = [1,2,45,3,4,49,5,6, 62, 7,8, 66,9,10, 79]

ojojk的主页 ojojk | 初学一级 | 园豆:102
提问于:2023-06-07 14:43
< >
分享
所有回答(8)
0

没有专业的人么,那我业余的答一波

list1= [1,2,3,4,5,6,7,8,9,10]
list2= [45, 49, 62, 66, 79]
list3 = []
list3Length = len(list1) + len(list2)
for x in range(list3Length):
    if x % 3 != 2:
        if len(list1) > 0:
            list3.append(list1.pop(0))
    else:
        if len(list2) > 0:
            list3.append(list2.pop(0))

print(list3)
复制粘贴机器人 | 园豆:720 (小虾三级) | 2023-06-07 16:11
0
list1= [1,2,3,4,5,6,7,8,9,10]
list2= [45, 49, 62, 66, 79]
list3 =[]
for i, j in zip([list1[i: i+2] for i in range(0, len(list1), 2)], list2):
    list3 += i
    list3 += [j]
Sunny-King | 园豆:363 (菜鸟二级) | 2023-06-07 17:07
0

from itertools import zip_longest

list1 = [1,2,3,4,5,6,7,8,9,10]
list2 = [45, 49, 62, 66, 79]

使用 zip_longest 将两个列表配对,没有配对到的元素填充为 None

pairs = zip_longest(list1, list2, fillvalue=None)

将配对的元素展开并过滤掉 None,得到最终的列表

list3 = [x for pair in pairs for x in pair if x is not None]

print(list3) # 输出:[1, 2, 45, 3, 4, 49, 5, 6, 62, 7, 8, 66, 9, 10, 79]

小马过河-2009 | 园豆:204 (菜鸟二级) | 2023-06-07 19:39
0

你可以使用循环和切片操作来将两个列表交叉合并为一个新的列表。下面是一个示例代码,展示了如何实现你的需求:

python
Copy code
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list2 = [45, 49, 62, 66, 79]

list3 = []
min_len = min(len(list1), len(list2))

for i in range(min_len):
list3.append(list1[i])
list3.append(list2[i])

处理剩余的列表元素

if len(list1) > len(list2):
list3.extend(list1[min_len:])
else:
list3.extend(list2[min_len:])

print(list3)
输出结果为:

csharp
Copy code
[1, 2, 45, 3, 4, 49, 5, 6, 62, 7, 8, 66, 9, 10, 79]
在这个例子中,我们首先找到两个列表的最小长度(即两个列表中较短的那个)。然后使用循环和切片操作,依次将两个列表的元素交叉添加到list3中。最后,我们处理剩余的列表元素,并将其添加到list3的末尾。

这样,你就可以得到你想要的list3。

Technologyforgood | 园豆:7541 (大侠五级) | 2023-06-07 22:14
0
list1= [1,2,3,4,5,6,7,8,9,10]
list2= [45, 49, 62, 66, 79]

list3 = []
i = 0
j = 0

while i < len(list1) or j < len(list2):
    if i < len(list1):
        list3.append(list1[i])
        i += 1
    if j < len(list2):
        list3.append(list2[j])
        j += 1

print(list3)

手动GPT

澈澈 | 园豆:440 (菜鸟二级) | 2023-06-08 14:18
0

有没有插入函数,插入到指定位置,这样就简单一点

LiveCoding | 园豆:502 (小虾三级) | 2023-06-10 15:47
0
你可以使用 zip 函数和列表推导式来实现:

list1= [1,2,3,4,5,6,7,8,9,10]
list2= [45, 49, 62, 66, 79]

list3 = [x for pair in zip(list1, list2) for x in pair] + list1[len(list2):]
这里的 zip 函数将两个列表中的元素一一对应起来,然后使用列表推导式将它们交替插入到一个新的列表 list3 中。最后,将剩余的 list1 元素添加到 list3 的末尾即可。
ycyzharry | 园豆:25683 (高人七级) | 2023-06-11 03:29
0

你可以使用 Python 的切片(slice)和 zip()函数来实现这个需求。

以下是一种可能的实现方式:

list1= [1,2,3,4,5,6,7,8,9,10]
list2= [45, 49, 62, 66, 79]

# 向 list1 中插入 list2 中的元素
for i, num in enumerate(list2):
    list1.insert(i*2+2, num)

# 将 list1 拆分为两个列表
list3a = list1[:5]
list3b = list1[5:]

# 合并两个列表
list3 = [item for items in zip(list3a, list3b) for item in items]
list3 += list3b[len(list3a):]

print(list3)

输出结果为:

[1, 2, 45, 3, 4, 49, 5, 6, 62, 7, 8, 66, 9, 10, 79]

解释一下代码的过程:

首先,我们使用 for 循环将 list2 中的所有元素插入到 list1 中。由于 list2 中有 5 个元素,所以我们需要在偶数下标处插入这些元素,因此使用式子 i*2+2 计算出所需插入位置的下标。

然后,我们将 list1 拆分成两个列表,并使用 zip() 函数将这两个列表的元素合并。zip() 函数会按照元素的下标依次将两个列表中的元素两两配对,返回的结果是一个可迭代的 zip 对象,我们使用列表推导式将其中的元素取出,存储到一个新列表中。

注意,由于 list1 中的元素数量可能不是偶数,因此在处理 list3b 列表中的元素时,需要使用切片去掉其中多余的元素,保证最终的列表中含有所有的元素。

小九九呀 | 园豆:383 (菜鸟二级) | 2023-06-17 20:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册