Python 如何将科学符号列表中的str改为int

Python 如何将科学符号列表中的str改为int,python,string,list,int,scientific-notation,Python,String,List,Int,Scientific Notation,我有一个列表,如下所示: ['3.2323943e+00, 4.4316312e+00, 4.3174178e+00, 3.8661688e+00, 3.6366895e+00, 3.4324592e+00, 3.3091351e+00, 3.1746527e+00, 1.0588169e+00, 4.4036068e+00, 4.4692073e+00, 4.3857228e+00, 4.2660739e+00, 4.1388672e+

我有一个列表,如下所示:

['3.2323943e+00,   4.4316312e+00,   4.3174178e+00,   3.8661688e+00,   
3.6366895e+00,   3.4324592e+00,   3.3091351e+00,   3.1746527e+00,   
1.0588169e+00,   4.4036068e+00,   4.4692073e+00,   4.3857228e+00,   
4.2660739e+00,   4.1388672e+00,   4.0061081e+00,   3.8303311e+00']
old_list = ['3.2323943e+00,   4.4316312e+00,   4.3174178e+00,   3.8661688e+00,   3.6366895e+00,   3.4324592e+00,   3.3091351e+00,   3.1746527e+00,   1.0588169e+00,   4.4036068e+00,   4.4692073e+00,   4.3857228e+00,   4.2660739e+00,   4.1388672e+00,   4.0061081e+00,   3.8303311e+00']

new_list = [float(i) for i in old_list[0].split(',')]

>>> new_list
[3.2323943, 4.4316312, 4.3174178, 3.8661688, 3.6366895, 3.4324592, 3.3091351, 3.1746527, 1.0588169, 4.4036068, 4.4692073, 4.3857228, 4.2660739, 4.1388672, 4.0061081, 3.8303311]

如何将其更改为int(现在显示错误,表示为str)以查找平均值和标准偏差?

使用列表理解:

list = [float(x) for x in '3.2323943e+00,   4.4316312e+00'.split(',')]
返回:

[3.2323943, 4.4316312]

只需添加其余数据。

使用列表理解:

list = [float(x) for x in '3.2323943e+00,   4.4316312e+00'.split(',')]
返回:

[3.2323943, 4.4316312]

只需添加其余数据。

您不能,它们不是整数,而是浮点值。您的列表是一个由一个大字符串组成的单元素列表,其中包含逗号分隔的浮点值,用数学表示法表示:

floats = list(map(float,'3.2323943e+00,   4.4316312e+00,   4.3174178e+00,   3.8661688e+00,   3.6366895e+00,   3.4324592e+00,   3.3091351e+00,   3.1746527e+00,   1.0588169e+00,   4.4036068e+00,   4.4692073e+00,   4.3857228e+00,   4.2660739e+00,   4.1388672e+00,   4.0061081e+00,   3.8303311e+00'.split(",")))

print (floats)

mean = sum(floats)/len(floats)
variance = sum((x-mean)**2 for x in floats) / len(floats)
popul = variance**0.5

from pprint import pprint

print(floats)
print("Mean",mean)
print("Variance",variance)
print("Population",popul)
输出:

[3.2323943, 4.4316312, 4.3174178, 3.8661688, 3.6366895, 3.4324592, 3.3091351, 
 3.1746527, 1.0588169, 4.4036068, 4.4692073, 4.3857228, 4.2660739, 4.1388672, 
 4.0061081, 3.8303311]
Mean 3.74745516875
Variance 0.6742259030611121
Population 0.8211126007199695

不能,它们不是整数,而是浮点值。您的列表是一个由一个大字符串组成的单元素列表,其中包含逗号分隔的浮点值,用数学表示法表示:

floats = list(map(float,'3.2323943e+00,   4.4316312e+00,   4.3174178e+00,   3.8661688e+00,   3.6366895e+00,   3.4324592e+00,   3.3091351e+00,   3.1746527e+00,   1.0588169e+00,   4.4036068e+00,   4.4692073e+00,   4.3857228e+00,   4.2660739e+00,   4.1388672e+00,   4.0061081e+00,   3.8303311e+00'.split(",")))

print (floats)

mean = sum(floats)/len(floats)
variance = sum((x-mean)**2 for x in floats) / len(floats)
popul = variance**0.5

from pprint import pprint

print(floats)
print("Mean",mean)
print("Variance",variance)
print("Population",popul)
输出:

[3.2323943, 4.4316312, 4.3174178, 3.8661688, 3.6366895, 3.4324592, 3.3091351, 
 3.1746527, 1.0588169, 4.4036068, 4.4692073, 4.3857228, 4.2660739, 4.1388672, 
 4.0061081, 3.8303311]
Mean 3.74745516875
Variance 0.6742259030611121
Population 0.8211126007199695

另一种方式是这样的:

['3.2323943e+00,   4.4316312e+00,   4.3174178e+00,   3.8661688e+00,   
3.6366895e+00,   3.4324592e+00,   3.3091351e+00,   3.1746527e+00,   
1.0588169e+00,   4.4036068e+00,   4.4692073e+00,   4.3857228e+00,   
4.2660739e+00,   4.1388672e+00,   4.0061081e+00,   3.8303311e+00']
old_list = ['3.2323943e+00,   4.4316312e+00,   4.3174178e+00,   3.8661688e+00,   3.6366895e+00,   3.4324592e+00,   3.3091351e+00,   3.1746527e+00,   1.0588169e+00,   4.4036068e+00,   4.4692073e+00,   4.3857228e+00,   4.2660739e+00,   4.1388672e+00,   4.0061081e+00,   3.8303311e+00']

new_list = [float(i) for i in old_list[0].split(',')]

>>> new_list
[3.2323943, 4.4316312, 4.3174178, 3.8661688, 3.6366895, 3.4324592, 3.3091351, 3.1746527, 1.0588169, 4.4036068, 4.4692073, 4.3857228, 4.2660739, 4.1388672, 4.0061081, 3.8303311]
然后,您可以使用
numpy
获取新列表的平均值和标准值:

import numpy as np

mean_of_list = np.mean(new_list)

std_of_list = np.std(new_list)
为了解释,您的值当前在一个由一个长字符串组成的列表中(我称之为
old_list
)。我的列表理解在逗号处将其拆分(使用
.split(',')
),并将其转换为浮点,而不是字符串(使用
浮点(…)

注意整数与浮动的比较

正如Patrick Artner在他们的文章中指出的,将其转换为float而不是int是有意义的,因为您的值看起来像float(它们似乎有一个相关的小数部分)。如果您确实希望将它们作为int,只需执行以下操作:

new_list = [int(float(i)) for i in old_list[0].split(',')]
但您的最终列表将是:

>>> new_list
[3, 4, 4, 3, 3, 3, 3, 3, 1, 4, 4, 4, 4, 4, 4, 3]

这可能不是您想要的。

另一种方法是:

['3.2323943e+00,   4.4316312e+00,   4.3174178e+00,   3.8661688e+00,   
3.6366895e+00,   3.4324592e+00,   3.3091351e+00,   3.1746527e+00,   
1.0588169e+00,   4.4036068e+00,   4.4692073e+00,   4.3857228e+00,   
4.2660739e+00,   4.1388672e+00,   4.0061081e+00,   3.8303311e+00']
old_list = ['3.2323943e+00,   4.4316312e+00,   4.3174178e+00,   3.8661688e+00,   3.6366895e+00,   3.4324592e+00,   3.3091351e+00,   3.1746527e+00,   1.0588169e+00,   4.4036068e+00,   4.4692073e+00,   4.3857228e+00,   4.2660739e+00,   4.1388672e+00,   4.0061081e+00,   3.8303311e+00']

new_list = [float(i) for i in old_list[0].split(',')]

>>> new_list
[3.2323943, 4.4316312, 4.3174178, 3.8661688, 3.6366895, 3.4324592, 3.3091351, 3.1746527, 1.0588169, 4.4036068, 4.4692073, 4.3857228, 4.2660739, 4.1388672, 4.0061081, 3.8303311]
然后,您可以使用
numpy
获取新列表的平均值和标准值:

import numpy as np

mean_of_list = np.mean(new_list)

std_of_list = np.std(new_list)
为了解释,您的值当前在一个由一个长字符串组成的列表中(我称之为
old_list
)。我的列表理解在逗号处将其拆分(使用
.split(',')
),并将其转换为浮点,而不是字符串(使用
浮点(…)

注意整数与浮动的比较

正如Patrick Artner在他们的文章中指出的,将其转换为float而不是int是有意义的,因为您的值看起来像float(它们似乎有一个相关的小数部分)。如果您确实希望将它们作为int,只需执行以下操作:

new_list = [int(float(i)) for i in old_list[0].split(',')]
但您的最终列表将是:

>>> new_list
[3, 4, 4, 3, 3, 3, 3, 3, 1, 4, 4, 4, 4, 4, 4, 3]

这可能不是您想要的。

它们是浮动。。。不是ints。。列表不是列表,而是字符串。。。。请在发布前测试您的答案。它们是浮动。。。不是ints。。列表不是列表,而是字符串。。。。请在发布前测试你的答案。问题不在于科学符号,而在于你的值在一个由一个长字符串组成的列表中。“科学记数法”可以很容易地理解为浮点数,从中可以得到平均值和标准偏差。请参阅下面的答案以获取解决方案。问题不在于科学符号,而在于您的值位于由一个长字符串组成的列表中。“科学记数法”可以很容易地理解为浮点数,从中可以得到平均值和标准偏差。有关解决方案,请参见下面的答案。