Converting list items from string to int(Python)

87,619

Solution 1

You should do this:

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

Solution 2

Apply int on each item in the list and return it as a list:

>>> 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]

Note about map differences in Python 2 and 3

In Python 2.x map returns directly the list, so you may use

>>> res = map(int, StudentGrades)

but in Python 3.x map returns an iterator, so to get real list, it must be wrapped into list call:

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

The later way works well in both version of Python

Solution 3

In [7]:

Student_Grades = ['56', '49', '63']
new_list = [int(i) for i in Student_Grades]
print(new_list)
[56, 49, 63]
Share:
87,619
swami_108
Author by

swami_108

Updated on July 18, 2022

Comments

  • swami_108
    swami_108 almost 2 years

    I have a list:

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

    and I want to convert each of the entries to integers so that I can calculate an average.

    Here's my code for converting:

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

    I keep getting the error

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

    and I don't know what to do.

    Here is my full code on how I got Student_Grades Choose_File = str(input("Please enter the exact name of the file to be read in (including file extention) : "))

    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
    

    The textfile has the format 'MECN1234 56, MECN1357 49, MATH1111 63'

  • Benjamin Bannier
    Benjamin Bannier about 10 years
    I think she wants to update the list.
  • Quintec
    Quintec about 10 years
    @BenjaminBannier Yes, I changed it.
  • swami_108
    swami_108 about 10 years
    This returned <map object at 0x00000000032BD518> and I'm not quite sure what this means. Forgive me, I'm new to programming
  • askewchan
    askewchan about 10 years
    @user3576929, you must be using Python 3 and @Jan is using python 2. You can fix this by using list(map(int, StudentGrades))
  • Jan Vlcinsky
    Jan Vlcinsky about 10 years
    @askewchan Thanks for your comment, I updated my answer to be Python 2 and 3 compatible