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

Converting list items from string to int(Python)

本问题已经有最佳答案,请猛点这里访问。

我有一个清单:

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

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

以下是我的转换代码:

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

我一直在出错

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

我不知道该怎么办。

这是我获得学生成绩的全部代码选择_file=str(input("请输入要读取的文件的确切名称(包括文件扩展名):")

1
2
3
4
5
6
7
8
9
10
11
12
13
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"


对列表中的每个项目应用int,并将其作为列表返回:

1
2
3
4
>>> 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和3中map差异的说明

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

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

但在python 3.x中,map返回一个迭代器,因此要得到实际的列表,必须将其包装到list调用中:

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

后一种方法在两个版本的python中都很好地工作。


你应该这样做:

1
2
for i in range(len(Student_Grades)):
    Student_Grades[i] = int(Student_Grades[i])


1
2
3
4
5
6
In [7]:

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