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?
谢谢。
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。
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])