如何在整数字符串上使用 eval() 函数?
How to use eval() function on string of ints?
用一串整数:
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))
基本上你得到了那个字符串中那些整数的列表的总和,并且还使用那个运算符(忘记了名字)将该列表分配给一个变量,同时 return 这个值,然后只是将总和除以该列表的长度
EDIT1, 2, 3: 刚记起来,叫walrus operator
,可以找到一些资料here (video by Lex Fridman) and here,还有其他地方,也需要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
用一串整数:
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))
基本上你得到了那个字符串中那些整数的列表的总和,并且还使用那个运算符(忘记了名字)将该列表分配给一个变量,同时 return 这个值,然后只是将总和除以该列表的长度
EDIT1, 2, 3: 刚记起来,叫walrus operator
,可以找到一些资料here (video by Lex Fridman) and here,还有其他地方,也需要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