将列表项从字符串转换为int(Python)[重复]
Posted
技术标签:
【中文标题】将列表项从字符串转换为int(Python)[重复]【英文标题】:Converting list items from string to int(Python) [duplicate] 【发布时间】:2014-06-16 00:53:18 【问题描述】:我有一个清单:
Student_Grades = ['56', '49', '63']
我想将每个条目转换为整数,以便计算平均值。
这是我的转换代码:
for i in Student_Grades:
Student_Grades = [int(i)]
我不断收到错误
invalid literal for int() with base 10: '56,'
我不知道该怎么办。
这是我如何获得 Student_Grades 的完整代码 choose_File = str(input("请输入要读入的文件的准确名称(包括文件扩展名):"))
with open(Choose_File, "r") as datafile:
counter = 1
x = 1
Student_Grades = []
Read = datafile.readlines()
info = Read[counter]
Split_info = info.split()
n = len(Split_info)
while x < n:
Student_Grades.append(Split_info[x])
x = x + 2
文本文件的格式为 'MECN1234 56, MECN1357 49, MATH1111 63'
【问题讨论】:
你的列表不只包含'56'
;那里也有一个逗号。你是如何创建Student_Grades
的?
我从一个文本文件中读取了几行,格式为:MECN1234 56, MECN1357 49, MATH1111 63 然后我使用 .split() 拆分这些行,然后将 Student_Grades 列表与来自的每个第二个条目拆分列表(即成绩)。
这是我的完整代码:Choose_File = str(input("请输入要读取的文件的确切名称(包括文件扩展名):")) with open(Choose_File, "r")作为数据文件:counter = 1 x = 1 Student_Grades = [] Read = datafile.readlines() info = Read[counter] Split_info = info.split() n = len(Split_info) 而 x
@user3576929 更大的代码片段最好添加到您的问题中(如果它不会改变您的问题),它更具可读性。
我该如何处理那个逗号?
【参考方案1】:
对列表中的每个项目应用int
并将其作为列表返回:
>>> StudentGrades = ['56', '49', '63']
>>> res = list(map(int, StudentGrades)) # this call works for Python 2.x as well as for 3.x
>>> print res
[56, 49, 63]
注意map
在 Python 2 和 3 中的差异
在 Python 2.x 中map
直接返回列表,所以你可以使用
>>> res = map(int, StudentGrades)
但在 Python 3.x 中,map
返回一个迭代器,因此要获得真正的列表,必须将其包装到 list
调用中:
>>> res = list(map(int, StudentGrades))
后一种方式在两个版本的 Python 中都运行良好
【讨论】:
这返回了 @user3576929,您必须使用 Python 3 而@Jan 使用的是 Python 2。您可以使用list(map(int, StudentGrades))
解决此问题
@askewchan 感谢您的评论,我将答案更新为兼容 Python 2 和 3【参考方案2】:
In [7]:
Student_Grades = ['56', '49', '63']
new_list = [int(i) for i in Student_Grades]
print(new_list)
[56, 49, 63]
【讨论】:
【参考方案3】:你应该这样做:
for i in range(len(Student_Grades)):
Student_Grades[i] = int(Student_Grades[i])
【讨论】:
我想她想更新列表。 @BenjaminBannier 是的,我改了。以上是关于将列表项从字符串转换为int(Python)[重复]的主要内容,如果未能解决你的问题,请参考以下文章