在网上见到了一篇文章,里面提到了一个算法问题:
编写一个交错合并列表元素的函数。例如:给定的两个列表为[a,B,C]和[1,2,3],函数返回[a,1,B,2,C,3]。
这里先做个示例数据
1
2
3
4
import string
a = [x for x in range(1, 11)]
b = [x for x in string.ascii_lowercase[:10]]
问题不太难,笔者给出了如下方案
方案1
笨方法,交替填值:
1
2
3
4
5
6
7
8
9
10
11
12
def merge(a, b):
result = []
for index, _ in enumerate(range(len(a) * 2)):
if index % 2 == 0:
result.append(a.pop(0))
else:
result.append(b.pop(0))
return result
if __name__ == '__main__':
result = merge(a, b)
print(result)
方案2
使用列表的切片赋值:
1
2
3
4
5
6
7
8
9
def merge(a, b):
tmp = ['' for _ in range(len(a) * 2)]
tmp[::2] = a
tmp[1::2] = b
return tmp
if __name__ == '__main__':
result = merge(a, b)
print(result)