用一串整数:
myStr = '3848202160702781329 2256714569201620911 1074847147244043342'
如何在保持字符串数据类型的同时对字符串整数求平均值? 这是我在伪代码中的想法:
sum = 0
res = eval(myStr[i] + ' + sum')
avg = res/len(myStr)
如果您想获得该字符串中这些整数的平均值,这是一种方法:
myStr = '3848202160702781329 2256714569201620911 1074847147244043342'
print(sum(lst := [int(x) for x in myStr.split()]) / len(lst))
基本上,您可以获得该字符串中的整数列表的总和,并使用该运算符(忘记名称)将该列表分配给变量,同时返回该值,然后只需将总和除以该变量的长度即可列表
EDIT1, 2, 3:刚想起来,它叫
walrus operator
,一些信息可以在这里(Lex Fridman的视频)和这里以及其他地方找到,也需要Python版本3.8或更高
EDITn:使用海象运算符背后的原因是它允许在这一行中不重复代码,否则列表理解将被使用两次(在
sum
和len
中),这可能会影响性能对于非常大的列表(我希望它是一行)
您可以拆分字符串,并将其映射为整数,然后找到列表的总和。最后将总和除以分割列表的长度。
myStr = '3848202160702781329 2256714569201620911 1074847147244043342'
print(sum(map(int,myStr.split()))/len(myStr.split()))
输出
2.3932546257161487e+18
由于(绝对有效)其他答案显示了单行解决方案,我想展示不同的步骤。这可能有助于了解发生了什么。
>>> myStr = '3848202160702781329 2256714569201620911 1074847147244043342'
>>> data = myStr.split()
>>> data
['3848202160702781329', '2256714569201620911', '1074847147244043342']
>>> data = list(map(int, data))
>>> data
[3848202160702781329, 2256714569201620911, 1074847147244043342]
>>> sum(data)
7179763877148445582
>>> sum(data) / len(data)
2.3932546257161487e+18