【问题标题】:Converting list items from string to int(Python) [duplicate]将列表项从字符串转换为int(Python)[重复]
【发布时间】: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 更大的代码片段最好添加到您的问题中(如果它不会改变您的问题),它更具可读性。
  • 我该如何处理那个逗号?

标签: python list python-3.x int


【解决方案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 是的,我改了。
    猜你喜欢
    • 2021-12-25
    • 2019-10-23
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多