将列表项从字符串转换为int(Python)

2024-04-26 01:26:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个清单:

Student_Grades = ['56', '49', '63']

我想把每个条目都转换成整数,这样我就能计算出平均值。

以下是我的转换代码:

for i in Student_Grades:
    Student_Grades = [int(i)]

我一直有错误

invalid literal for int() with base 10: '56,'

我不知道该怎么办。

这是我获得学生成绩的完整代码 选择_File=str(输入(“请输入要读取的文件的确切名称(包括文件扩展名):”)

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”


Tags: 文件代码infoforreadwithcounter条目
3条回答

你应该这样做:

for i in range(len(Student_Grades)):
    Student_Grades[i] = int(Student_Grades[i])
In [7]:

Student_Grades = ['56', '49', '63']
new_list = [int(i) for i in Student_Grades]
print(new_list)
[56, 49, 63]

对列表中的每个项应用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]

关于Python 2和Python 3中的map差异的注意事项

在Python 2.x中,map直接返回列表,因此可以使用

>>> res = map(int, StudentGrades)

但是在Python 3.x中map返回一个迭代器,因此要获得真正的列表,必须将它包装到list调用中:

>>> res = list(map(int, StudentGrades))

后一种方法在Python的两个版本中都很有效

相关问题 更多 >