python - 合并两个列表(偶数/奇数元素)
问题描述
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()
我关注了另一个完成类似任务的帖子,但是它只是将 B 中的元素插入 A。这种方法没有生成新的列表 C。
for i,v in enumerate(B):
A.insert(2*i+1,v)
如何创建一个基于偶数/奇数元素合并 A 和 B 的新列表 C?
谢谢。
解决方案
In [194]: A = np.arange(1, 5, 0.5)
...: B = np.arange(11, 15, 0.5)
派生自的列表A
是副本。就地更改C
不影响A
:
In [196]: C = A.tolist()
In [197]: for i,v in enumerate(B):
...: C.insert(2*i+1,v)
...:
In [198]: A
Out[198]: array([1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])
In [199]: B
Out[199]: array([11. , 11.5, 12. , 12.5, 13. , 13.5, 14. , 14.5])
In [200]: C
Out[200]:
[1.0,
11.0,
1.5,
11.5,
2.0,
12.0,
2.5,
12.5,
3.0,
13.0,
3.5,
13.5,
4.0,
14.0,
4.5,
14.5]
数组方法:
In [201]: np.vstack((A,B))
Out[201]:
array([[ 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5],
[11. , 11.5, 12. , 12.5, 13. , 13.5, 14. , 14.5]])
In [202]: np.vstack((A,B)).ravel(order='F')
Out[202]:
array([ 1. , 11. , 1.5, 11.5, 2. , 12. , 2.5, 12.5, 3. , 13. , 3.5,
13.5, 4. , 14. , 4.5, 14.5])
或者我们可以将数组堆叠为列并进行普通的C
排序。
===
另一种列表方式 - 用于zip
制作列表列表,并将itertools.chain
其展平:
In [203]: import itertools
In [204]: [(i,j) for i,j in zip(A,B)]
Out[204]:
[(1.0, 11.0),
(1.5, 11.5),
(2.0, 12.0),
(2.5, 12.5),
(3.0, 13.0),
(3.5, 13.5),
(4.0, 14.0),
(4.5, 14.5)]
In [205]: list(itertools.chain(*[(i,j) for i,j in zip(A,B)]))
Out[205]:
[1.0,
11.0,
1.5,
11.5,
2.0,
12.0,
2.5,
12.5,
3.0,
13.0,
3.5,
13.5,
4.0,
14.0,
4.5,
14.5]
推荐阅读
- matlab - 避免每次启动可执行文件时删除 MCR CACHE
- python - 某些向量元素的快速(稀疏)矩阵构造
- windows - 如何递归查找所有文件并使用 cmd 显示完整路径和行号?
- spring-boot - 在 Spock 中测试创建方法的问题
- javascript - 有没有办法在引导 Div 元素中调整 p5js 画布的大小?
- django - django + gninx + gunicorn 应用程序缺少“dnspython”错误,即使在将其安装到正确的虚拟环境之后也是如此
- regex - 正则表达式:匹配两个标签之间的换行符(或者两个星号)
- spring - Spring boot with high concurrency
- c# - .Net Csvhelper 标头未找到
- postgresql - 是否可以在 postgresql 中仅复制一个模式?