web-dev-qa-db-ja.com

リスト項目を文字列からint(Python)に変換する

リストがあります:

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」です。

7
swami_108

これを行う必要があります:

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

リストの各アイテムに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と3のmapの違いに関する注意

Python 2.x mapでは、リストが直接返されるので、

>>> res = map(int, StudentGrades)

Python 3.x mapでは、イテレータが返されるため、実際のリストを取得するには、list呼び出しにラップする必要があります。

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

後者の方法は両方のバージョンのPythonでうまく機能します

16
Jan Vlcinsky
In [7]:

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