import itertools
A=['5', '5', '262.1', 0, 0.0, ['5', '5', '262.1', 0, 0.0], ['5', '5', '262.1', 0, 0.0]]
new_a = itertools.chain.from_iterable([[list(b)] if not a else list(b) for a, b in itertools.groupby(A, key=lambda x:isinstance(x, list))])
final_result = [str(round(sum(i), 1)) for i in zip(*[map(float, i) for i in new_a])]
# original input
A = ['5', '5', '262.1', 0, 0.0, ['5', '5', '262.1', 0, 0.0], ['5', '5', '262.1', 0, 0.0]]
# build a list of lists containing the non-list elements from 'A'
# i.e. it gets '5', '5', '262.1', 0, 0.0
N = [[float(item) for item in A if not isinstance(item, list)]]
# build a list of lists containing the list elements from 'A'
# i.e. it gets both ['5', '5', '262.1', 0, 0.0]
L = [list(map(float, item)) for item in A if isinstance(item, list)]
# at this point...
# N = [['5', '5', '262.1', 0, 0.0]]
# L = [['5', '5', '262.1', 0, 0.0], ['5', '5', '262.1', 0, 0.0]]
# N + L = [['5', '5', '262.1', 0, 0.0], ['5', '5', '262.1', 0, 0.0], ['5', '5', '262.1', 0, 0.0]]
# zip() iterates over each internal iterable simulatenously preforming 'sum()'
F = [sum(item) for item in zip(*(N + L))]
您可以按元素类型对数据进行分组:
输出:
每用户评论:
因此,内联注释可能会有所帮助,但快速细分和链接可能会对您有所帮助:
A
中的元素是否是list
对象(因为列表中有列表)float
)映射到A
中的每个列表元素map()
转换为list
对象,该对象显示为[ ]
sum()
list
的快速方法;这是[i for i in x]
语法相关问题 更多 >
编程相关推荐