将列表项从字符串转换为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)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python将int转换为保留零的字符串[重复]

定义python程序时如何将int格式转换为字符串格式[重复]

将二维列表中的字符转换为int值python

将列表中的所有字符串转换为int

如何将列表转换为字符串[重复]

Python:将字符串列表转换为布尔值,其中布尔值以字符串形式存在[重复]