2015-10-21 6 views
1

Im пытается взять номера из num.txt (1 3 2) и установите его в массивPython TypeError: требуется целое (есть список типов)

from array import * 
import sys  
f = open('num.txt', 'r') 
l = f.readlines() 
f.close() 
list = [1, 2, 3, 4, 5 ,6] 
sclist = [l] 
myArray = array('i', []) 
myArray.fromlist(sclist) 
for i in myArray: 
    print(i) 

возвращает

TypeError: an integer is required (got type list) 

Если изменить его myArray.fromlist (INT (sclist)) Я получаю

TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'  
+0

Почему вы хотите использовать массив здесь, не можете ли вы сделать что-нибудь из списка? – Hackaholic

+0

1.) Почему, по-вашему, вам нужен «arrary.array»? Что случилось с простым «списком»? 2). Какова цель 'list = [1, 2, 3, 4, 5, 6]'? BTW, не используйте 'list' в качестве имени переменной, поскольку это затеняет встроенный тип' list'. 3). 'sclist = [l]' помещает список списков строк в 'sclist'. Я не думаю, что ты этого хочешь. –

ответ

1

Предположим, что ваш файл содержит одну цифру в каждой строке, вы можете изменить назначение на sclist в:

sclist = [int(s) for s in l] 

Хотелось бы надеяться, что будет работать. Я также предлагаю вам избегать использования «списка» в качестве имени переменной (не используется в этом примере), поскольку это замаскирует стандартное определение Python и может вызвать путаницу.

1

Проблема здесь в том, что l = f.readlines() возвращает список строк , который затем помещается в другой список sclist = [l], поэтому просто сделайте myArray.fromlist(l).
Перед выполнением вызова myArray.fromlist(l) убедитесь, что вы преобразовали содержимое, которое вы читаете из файла, в int.

+0

Еще получить TypeError: требуется целое число (получен тип str) –

Смежные вопросы