在python中一起添加列表值?
我有一个如下列表:在python中一起添加列表值?,python,python-3.x,list,Python,Python 3.x,List,我有一个如下列表: ['9,7,4', '10,5,6,5,5', '10,8,5,3,0', '8,4,2'] 如何将数字转换为整数并将各个字符串值相加 因此,期望的输出将是 ['20','31','26','14'] 使用map将拆分的(使用,作为分隔符)字符串值转换为int,然后通过列表理解获得总和 input_list = ['9,7,4', '10,5,6,5,5', '10,8,5,3,0', '8,4,2'] output = [str(sum(map(int, x.split
['9,7,4', '10,5,6,5,5', '10,8,5,3,0', '8,4,2']
如何将数字转换为整数并将各个字符串值相加
因此,期望的输出将是
['20','31','26','14']
使用
map
将拆分的(使用,
作为分隔符)字符串值转换为int
,然后通过列表理解获得总和
input_list = ['9,7,4', '10,5,6,5,5', '10,8,5,3,0', '8,4,2']
output = [str(sum(map(int, x.split(',')))) for x in input_list]
print (output)
输出
['20', '31', '26', '14']
我在看到所需的字符串输出后进行了编辑如果所有字符串都是这种格式,您可以尝试使用函数-这将数字转换为元组,您可以从元组中计算总和
[sum(map(int, group.split(','))) for group in l]
>>> l = ['9,7,4', '10,5,6,5,5', '10,8,5,3,0', '8,4,2']
>>> sums = [sum(numbers) for numbers in map(eval, l)]
>>> sums
[20, 31, 26, 14]
如果希望输出列表包含字符串,可以轻松映射这些值:
[str(value) for value in sums]
# or
map(str, sums)
有人提到了
eval
,因此我认为您应该进一步采用安全的eval替代方案:
>>> import ast
>>> [ast.literal_eval(v.replace(',', '+')) for v in lst]
>>> [20, 31, 26, 14]
我喜欢这个答案的一点是,它纯粹是一种非功能性的方法(在列表理解中没有map
,这很好,但我并不真正相信混合范式)
显然,只有当数字由一个逗号分隔,没有任何前导或尾随字符以及无效的算术表达式时,这才有效
我把转换成字符串留作练习。在列表中循环,用逗号拆分字符串,转换成整数(
int(string)
)并对结果列表求和。如果我理解的话,你应该这样做:1)遍历字符串,2)用逗号拆分字符串3)将拆分的字符串转换成整数,4)将结果合并到一个列表中。你对哪一部分有疑问?那么,真正的问题是:如何找到'9,7,4'
的和?(如果你可以这样做,你可以做其余的。)split
字符串,将每个片段转换为int
,应用sum
,转换回str
ing。嘿,我更新了我的问题。很抱歉造成混淆。@JamesHomes:如果下面的答案有助于解决您的问题,您应该选择您认为最好的答案。在列表中使用map
理解相当昂贵。我想您应该在拆分后使用矢量化函数。[str(sum(np.array)(I.split(“,”,dtype=“I”))表示输入列表中的I]