np.concatenate合并列表后逗号消失如何恢复?不等长列表合并问题
Python列表合并问题解决
一、Numpy合并后恢复元素间逗号
问题场景
使用np.concatenate合并两个列表后,输出的numpy数组元素间无逗号,不符合列展示需求:
原数据:
data = [['bc1qxerefpfv3eaje77pmz44uuhkrtuss96pr8l86h', '0.01001904'], ['bc1qqd3v30aq6fsjnyl236rft7607rcdj4sjj3f4ty', '0.00476636']] receiver = [['36P29dTs6XnAiVxiMxZqmKBm1bFpsHfueR', '0.00167392'],['3D38TeCNgMdJBScz5CXnKkuKSUZpU7Y4mH', '0.01011148']]
合并代码:
import numpy as np result = np.concatenate((data, receiver), axis=1)
当前输出(无逗号):
result:[['bc1qxerefpfv3eaje77pmz44uuhkrtuss96pr8l86h' '0.01001904' '36P29dTs6XnAiVxiMxZqmKBm1bFpsHfueR' '0.00167392'] ['bc1qqd3v30aq6fsjnyl236rft7607rcdj4sjj3f4ty' '0.00476636' '3D38TeCNgMdJBScz5CXnKkuKSUZpU7Y4mH' '0.01011148']]
解决方法
将numpy数组转换为Python原生列表,即可恢复元素间的逗号:
result_list = result.tolist() print(result_list)
输出结果:
[['bc1qxerefpfv3eaje77pmz44uuhkrtuss96pr8l86h', '0.01001904', '36P29dTs6XnAiVxiMxZqmKBm1bFpsHfueR', '0.00167392'], ['bc1qqd3v30aq6fsjnyl236rft7607rcdj4sjj3f4ty', '0.00476636', '3D38TeCNgMdJBScz5CXnKkuKSUZpU7Y4mH', '0.01011148']]
如果需要自定义打印格式,也可以循环遍历数组元素手动拼接:
for row in result: print(', '.join(row))
输出:
bc1qxerefpfv3eaje77pmz44uuhkrtuss96pr8l86h, 0.01001904, 36P29dTs6XnAiVxiMxZqmKBm1bFpsHfueR, 0.00167392 bc1qqd3v30aq6fsjnyl236rft7607rcdj4sjj3f4ty, 0.00476636, 3D38TeCNgMdJBScz5CXnKkuKSUZpU7Y4mH, 0.01011148
二、不等长列表按指定格式合并
问题场景
两个不等长列表:
list1 = [[1,2],[3,4],[5,6],[7,8],[9,5]] list2 = [[23,56],[78,89]]
使用list(map(list.__add__, list1, list2))仅能合并前2个元素,无法保留list1中剩余元素,期望输出格式:
1 2 23 56 3 4 78 89 5 6 7 8 9 5
解决方法
通过列表推导式遍历所有元素,对存在对应list2元素的行进行合并,否则保留原list1的行:
merged = [list1[i] + list2[i] if i < len(list2) else list1[i] for i in range(len(list1))]
然后按指定格式打印:
for row in merged: print(' '.join(map(str, row)))
执行后输出:
1 2 23 56 3 4 78 89 5 6 7 8 9 5
内容的提问来源于stack exchange,提问作者user20630484
相关产品推荐
相关产品推荐

