合并两个列表(偶数/奇数元素)

问题描述 投票:0回答:1
len_array = 10
A = np.zeros( len_array )
B = np.zeros( len_array )

A = np.arange(1, 5, 0.5)
B = np.arange(11, 15, 0.5)
A = A.tolist()
B = B.tolist()

我跟随另一个执行类似任务的post,但是它只是将B中的元素插入到A中。此方法未生成新列表C。

for i,v in enumerate(B):
    A.insert(2*i+1,v) 

如何创建基于A和B的偶数/奇数元素合并的新列表C?

谢谢。

python numpy
1个回答
0
投票

builtin zip()和列表理解的组合。

C = [item for sublist in zip(A, B) for item in sublist]

这是这段代码(某种程度上)的详细描述:

C = []
for sublist in zip(A, B):
    for item in sublist:
         C.append(item)

或更短:

C = []
for sublist in zip(A, B):
    C.extend(sublist)

请注意,当最短列表结束时,将停止使用zip(A,B)。如果您需要其他行为,请使用zip_longest


0
投票

OP:如何创建一个新的列表C,该列表基于A和B的偶数/奇数元素进行合并?

假设您有两个包含混合的奇/偶元素的列表,您可以将奇/偶元素分开并将它们存储在单独的列表中,然后使用zip()在它们上进行迭代:

A = [1,2,3,4]
B = [1,2,2,4]

odd_lst = []
even_lst = []


def is_even_odd(item):
    if int(item) % 2 == 0:
        even_lst.append(item)
    else:
        odd_lst.append(item)

for a_item, b_item in zip(A,B):
    is_even_odd(a_item)
    is_even_odd(b_item)


print([item for tup in zip(odd_lst, even_lst) for item in tup])
© www.soinside.com 2019 - 2024. All rights reserved.