Как убрать "" из моего списка python 3,2 - PullRequest
0 голосов
/ 16 июня 2020
newlist=['21', '6', '13', '6', '11', '5', '6', '10', '11', '11', '21', '17', '23', '10', '36', '4', '4', '7', '23', '6', '12', '2', '7', '5', '14', '3', '10', '5', '9', '43', '38']

Теперь то, что я хочу сделать с этим списком, - это убрать "" вокруг каждого целого числа, проблема в том, что функция split () или функция strip () не работают. Так что не знаю, как его удалить. Справка.

AttributeError: объект 'list' не имеет атрибута 'split' задается при запуске.

Также после этого я хочу найти сумму всех 7 целых чисел в списке, и что я тоже не знаю, с чего начать. Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

3 голосов
/ 17 июня 2020

Это не работает, потому что это список строк, а не целых чисел.

 x = [int(x) for x in newlist]

Это приведет к преобразованию каждого значения в списке в int.

Также после этого я хочу найти сумму всех 7 целых чисел в списке

^ Вы можете уточнить, что это означает? Это сумма каждых семи последовательных чисел до конца списка? Если да, то

sums = []
index = 0
for i in range(0, len(newlist), 7):
    sums[index] = sum(newlist[i : i + 7)])
    index += 1

EDIT: Полный код:

x = [int(x) for x in newlist]
sums = []
for i in range(0, len(x), 7):
    sums.append(sum(x[i : i + 7]))
1 голос
/ 17 июня 2020

У вас есть список строк (отсюда и буквы), и вы хотите преобразовать их в целые числа. Скучное решение проблемы - простое для l oop:

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

Более компактный метод - это составление списка, о котором вы можете прочитать здесь: Составление списка :

newlist = [int(num) for num in newlist]

Две упомянутые вами функции работают только с отдельными строками.

>>> "Hi my name is Bob".split(" ")
["Hi", "my", "name", "is", "Bob"]
>>> "GARBAGE This string is surrounded by GARBAGE".strip("GARBAGE")
" This string is surrounded by "

Как упомянул @Tomoko Sakurayama, вы можете достаточно просто суммировать с другим l oop. Однако, если вам нравится, вы можете использовать другое понимание списка (или даже сложить его со старым, хотя это не очень похоже на Pythoni c:).

[sum(newlist[i:i+7]) for i in range(0, len(newlist) - 6, 7)] + [sum(newlist[-(len(newlist) % 7):])]
0 голосов
/ 17 июня 2020

Вы можете использовать карту в этом случае;

new_list = list(map(int, newlist))

print(new_list) == [21, 6, 13, 6, 11, 5, 6, 10, 11, 11, 21, 17, 23, 10, 36, 4, 4, 7, 23, 6, 12, 2, 7, 5, 14, 3, 10, 5, 9, 43, 38]
0 голосов
/ 17 июня 2020

Вероятно, вы ищете python s map функцию:

oldlist = ['21', '6', '13', '6', '11', '5', '6', '10', '11', '11', '21', '17', '23', '10', '36', '4', '4', '7', '23', '6', '12', '2', '7', '5', '14', '3', '10', '5', '9', '43', '38']
newlist = list(map(int, oldlist))

print(type(newlist[0]))
print(newlist) 

И вывод:

<class 'int'>

[21, 6, 13, 6, 11, 5, 6, 10, 11, 11, 21, 17, 23, 10, 36, 4, 4, 7, 23, 6, 12, 2, 7, 5, 14, 3, 10, 5, 9, 43, 38]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...