Как из list сделать int python
Перейти к содержимому

Как из list сделать int python

  • автор:

Осваиваем Python: преобразование строки в число на конкретных примерах

Иногда требуется преобразовать строку в целое число или в число с плавающей точкой для осуществления определённых операций в Python.

Если вы попробуете выполнить то или иное действие со строкой в виде чисел, то получите ошибку.

Этот код приведёт к ошибке :

str_a = ’50’ b = 10 c = str_a + b print (c)

В Python можно использовать функции int и float для преобразования строки в целое число или число с плавающей точкой до осуществления каких-либо операций.

Обновлено: 2023-05-31 19:18:07 Сергей Бензенко автор материала

Использование функции int() для преобразования строки в целое число

Рассмотрим следующий код:

str_a = '50' b = 10 c = int(str_a) + b print ("The value of c header-42948-2">Преобразование десятичной строки в число с плавающей точкой

Можно использовать класс float для того чтобы осуществить преобразование строки в число с плавающей точкой.

Пример использования float для преобразования строки:

#Пример преобразования string во float str_a = '50.85' b = 10.33 c = float(str_a) + b print ("The value of c 1" data-ab-test="post_related" data-ab-key="yarpp">
Модуль re Python – осваиваем регулярные выражения Python

Замечание: если вы попытаетесь использовать здесь функцию int(), то получите ошибку.

Преобразование списка строковых чисел в список целых чисел

Если нужно преобразовать строки из чисел, содержащиеся в списке, тогда используйте генератора списков.

Будет создан новый список, в котором можно применить функцию int в каждой итерации.

Код:

#Пример преобразования string в int в списке str_lst = ['1', '2', '3'] int_lst = [int(x) for x in str_lst] print (int_lst)

Будет выведен новый список, состоящий из целых чисел, полученных из строк.

Преобразование списка строк в список чисел с плавающей точкой

Аналогичным образом можно использовать float вместо int для преобразования списка, содержащего строки из целых чисел. Рассмотрим пример:

Код для преобразования элементов списка в числа с плавающей точкой:

#Пример преобразования string во float в списке str_lst = ['10.505', '2.3', '3.99'] float_lst = [float(x) for x in str_lst] print (float_lst)

Пример преобразования строки с запятыми в число

Ну а как насчёт строки наподобие “5,000,000”? Если попытаетесь преобразовать ее, используя функции int() или float() , то получите ошибку.

Решением будет использование import locale . Например:

locale.setlocale(locale.LC_ALL, ‘en_US.UTF-8’ )

Но это может вызвать проблемы в остальных локалях. Другое решение заключается в том, чтобы заменить запятые пустыми строками, то есть“”, а затем использовать функцию int.

str_a = '5,123,000' int_b = int(str_a.replace(',','')) print ("The integer value",int_b)

В результате получаем целое значение. Это же решение можно применить для конвертации строки в число с плавающей точкой.

Преобразование строки в число для расчёта високосного года -пример

Пользовательский ввод в Python- программах воспринимается как строка. В следующем примере пользователя просят ввести год. После ввода значения программа сообщает, високосный это год или нет.

Для этого введённое значение сначала преобразуется в целое число, а затем используется формула расчёта високосного года.

#Пример расчёта високосного года try: Y = int(input("Enter a Year? ")) exceptValueError: print ("You may only enter digits in '2000' format!") else: leap_or_not = Y%4 == 0 ifleap_or_not: print ("Leap year") else: print ("Not a leap year")

Вводимая строка сразу преобразуется в целое число, а затем используется для расчёта.

Как преобразовать целое число в строку?

Для преобразования целых чисел в строки в Python можно использовать функцию str() . Функция str() принимает объект, который может быть типа int , float , double и т.п.

Рассмотрим пример преобразования переменной типа int в строку, которая затем используется как строка для конкатенации:

#Примерпреобразованияint в string a_string = "str function for int to string" a_num = 456 print (a_string + str(a_num))
str function for int to string456

Если бы целочисленная переменная была использована без функции str(), возникла бы ошибка TypeError.

Сергей Бензенко автор-переводчик статьи « 5 examples to Convert a Python string to int and float »

Python: Как преобразовать список в строку?

В этом коротком руководстве мы рассмотрим различные методы, которые можно использовать для преобразования списка Python в строку.

Зачем преобразовывать список Python в строку?

Преобразование списка Python в строку является обычным явлением, хотя наиболее распространенный случай использования, с которым я столкнулся, - это преобразование итерируемого объекта в строку, чтобы его можно было отобразить. Python предоставляет нам несколько способов преобразования списков Python в строку, эти методы не имеют конкретных ограничений для сравнения, и, следовательно, это сводится только к пониманию и удобству программистов этого метода.

Если это не так, я бы порекомендовал это решение, если вы новичок. Но не стесняйтесь пройти их все, если вам интересно их изучить.

Способы преобразования списка Python в строки

Используя join():

Наиболее распространенным и питоническим способом преобразования списка python в строку является использование метода join() . Он принимает итеративные объекты, последовательно присоединяет и возвращает их в виде строки. Однако значения в iterable должны иметь строковый тип данных, и в случае, если iterable содержит int, вы можете использовать второй метод.

string.join(iterable) 

Здесь string является разделителем

iterable - Любой итерируемый объект - список, кортежи, набор и т.д.

Код для преобразования списка Python в строку с помощью join():

flexiple = ["Hire", "the", "top", "freelancers"] print(" ".join(flexiple)) #Output - "Hire the top freelancers" 

Поскольку разделителем был пробел, строка содержит символы в списке, разделенные строкой.

Как упоминалось выше, попытка использовать итерацию, содержащую объект int , вернет typeerror . Следующее решение покажет вам, как это обойти.

flexiple = ["Hire", "the", "top", 10, "python","freelancers"] print(" ".join(flexiple)) 

Использование join() и map():

Поскольку методы join() принимают только строковые значения, мы используем map() для преобразования значений int в строку перед преобразованием списка python в строку. Методы map() выполняют определенную функцию для всех значений в итерации.

map(function, iterables) 

function - Конкретная функция, которую вы хотите выполнить

iterable - Итерируемый объект, содержащий значения

Таким образом, передавая функцию str() , которая преобразует объекты в строку, мы можем преобразовать значения типа int, а затем объединить их в строку.

Код для преобразования списка Python в строку с помощью map() :

flexiple = ["Hire", "the", "top", 10, "python","freelancers"] print(" ".join(map(str,flexiple))) #Output - "Hire the top 10 python freelancers" 

Использование цикла:

Третий метод преобразования списка Python в строку - это написать цикл и добавить каждую итерацию в строку. Я бы предложил этот метод, если вы новичок в Python и не знакомы с такими понятиями, как join() и map() т.д. Код может быть длиннее, но он будет более читабельным для новичка.

flexiple = ["Hire", "the", "top", 10, "python","freelancers"] f1 = "" for i in flexiple: f1 += str(i)+ " " print(f1) #Output = "Hire the top 10 python freelancers " 

Преобразование списка из str в int

Author24 — интернет-сервис помощи студентам

Преобразование str в int
Добрый день, гуру программирования. Прошу помочь в такой проблеме. Мне необходимо сделать.

Преобразование типов int в str
Ребята как здесь реализовать правильно преобразование int в str;.

Задача на преобразование str в int
Задание подробно описано внутри алгоритма задачи.. Помогите найти ошибку чего то я где-то.

Вывод числа в drawstring, преобразование str в double и int
не работает прогррамма можеть кто поможет namespace WindowsFormsApplication12 < public.

Преобразование списка из String в int
Добрый день. Подскажите пожалуйста, в чем ошибка, у меня есть ArrayList со значениями,которые.

Автоматизируй это!

Эксперт Python

7102 / 4606 / 1214
Регистрация: 30.03.2015
Сообщений: 13,218
Записей в блоге: 29
устали мы с тобой, почему не читаешь?

ЦитатаСообщение от Mindfure Посмотреть сообщение

Выдает ошибку invalid literal for int() with base 10: '(1,'

что тут не так? перевел? давай подумаем вместе! хммм. чет он скобку показывает. О! Идея - может он не может скобку превратить в инт? как думаешь?
может удалить из строки скобки перед тем как сплитить по запятой? подчеркиваю - сплит надо делать по запятой а не пробелу

955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533

Welemir1, я чего-та не понимаю, но то, что у него уже в инте, ведь если нет, то должно быть так:

если так: (0, 2, 4, 1, 3), то просто цикл перебора элементов, они уже в инт.

Добавлено через 1 минуту
Получается у него кортеж, то там всё равно инты.

Добавлено через 9 секунд

Автоматизируй это!

Эксперт Python

7102 / 4606 / 1214
Регистрация: 30.03.2015
Сообщений: 13,218
Записей в блоге: 29

ЦитатаСообщение от Damenikx Посмотреть сообщение

я чего-та не понимаю,
да, у него '(0, 2, 4, 1, 3)'
Регистрация: 25.09.2016
Сообщений: 324

Damenikx, Нет, я отправил это серверу, а он преобразовал в str

conn.send((str)(key).encode('utf-8'))

Принятие клиентом:

data2 = sock.recv(16384) str2 = (data2.decode('utf-8'))

Автоматизируй это!

Эксперт Python

7102 / 4606 / 1214
Регистрация: 30.03.2015
Сообщений: 13,218
Записей в блоге: 29
просто он пишет список, приводит кортеж, а имеет в виду строку))) классика
Регистрация: 25.09.2016
Сообщений: 324
Welemir1, Из-за передачи она может полностью стать str?
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533

ЦитатаСообщение от Welemir1 Посмотреть сообщение

просто он пишет список, приводит кортеж, а имеет в виду строку))) классика

Я поэтому 3 раза читаю, 3 раза понять не могу.

Добавлено через 7 минут
Mindfure, вот: (сейчас Welemir1 будет ругаться )

1 2 3 4 5 6 7 8
str2 = '(1, 2, 3, 4, 5)' res1 = str2.replace('(',"") res2 = res1.replace(')',"") print(res2) for i in res2.split(', '): s = int(i) print(s)

Регистрация: 13.02.2016
Сообщений: 166

ЦитатаСообщение от Mindfure Посмотреть сообщение

Welemir1, Из-за передачи она может полностью стать str?
Не только может но и непременно станет
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533

Лучший ответ

Сообщение было отмечено Mindfure как решение

Решение

Mindfure, кучу переменных можно не делать, это я для вас, чтобы вы видели, как это происходит. Можно менять сразу же получившуюся строку:

1 2 3 4 5 6 7 8
str2 = '(1, 2, 3, 4, 5)' str2 = str2.replace('(', "") str2 = str2.replace(')', "") for i in str2.split(', '): s = int(i) print(type(s))

Добавлено через 1 минуту
Ещё можно через регулярки.

Добавлено через 4 минуты
Через регулярки, вот:

1 2 3 4 5 6
import re str2 = '(1, 2, 3, 4, 5)' line = re.sub('[(),]', '', str2) for i in line.split(' '): s = int(i) print(type(s), s)

Добавлено через 4 минуты
Ну и на закуску:

1 2 3 4
import re str2 = '(1, 2, 3, 4, 5)' x = [int(i) for i in re.sub('[(), ]', '', str2)] for i in x: print(type(i), i)

Регистрация: 25.09.2016
Сообщений: 324
Damenikx, Да, спасибо большое
4494 / 3242 / 1131
Регистрация: 21.03.2016
Сообщений: 7,985
Mindfure, а что бы не плясать с бубном передавайте объект
клиент

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
import socket import pickle sock = socket.socket() sock.connect(('localhost', 9090)) obj = { 'a': 1, 'b': [2, 3], 'c': { 'c1': 'abc', } } print('Send:', obj) data = pickle.dumps(obj) sock.sendall(data) print('Close') sock.close()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
import pickle BUFFER_SIZE = 4096 import socket sock = socket.socket() sock.bind(('', 9090)) sock.listen(1) print('Sock name: <>'.format(sock.getsockname())) while True: conn, addr = sock.accept() print('Connected:', addr) all_data = bytearray() while True: data = conn.recv(BUFFER_SIZE) if not data: break print('Recv: <>: <>'.format(len(data), data)) all_data += data print('All data (<>): <>'.format(len(all_data), all_data)) obj = pickle.loads(all_data) print('Obj:', obj) print('Close') conn.close()

результат
клиент
Send: >
Close
сервер
Sock name: ('0.0.0.0', 9090)
Connected: ('127.0.0.1', 2602)
Recv: 66: b'\x80\x03>q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02]q\x03(K\x02K\x03eX\x01\x00\x00\x00cq\x04>q\x05X\x02\x00\x00\x00c1q\x06X\x03\x00\ x00\x00abcq\x07su.'
All data (66): b'\x80\x03>q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02]q\x03(K\x02K\x03eX\x01\x00\x00\x00cq\x04>q\x05X\x02\x00\x00\x00c1q\x06X\x03\x00\ x00\x00abcq\x07su.'
Obj: >
Close

Массивы

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

Раньше мы сталкивались с задачей обработки элементов последовательности, например, вычисляя наибольший элемент последовательности. Но при этом мы не сохраняли всю последовательность в памяти компьютера, однако, во многих задачах нужно именно сохранять всю последовательность, например, если бы нам требовалось вывести все элементы последовательности в возрастающем порядке (“отсортировать последовательность”).

Для хранения таких данных можно использовать структуру данных, называемую в Питоне список (в большинстве же языков программирования используется другой термин “массив”). Список представляет собой последовательность элементов, пронумерованных от 0, как символы в строке. Список можно задать перечислением элементов списка в квадратных скобках, например, список можно задать так:

Primes = [2, 3, 5, 7, 11, 13]
Rainbow = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']

В списке Primes — 6 элементов, а именно, Primes[0] == 2, Primes[1] == 3, Primes[2] == 5, Primes[3] == 7, Primes[4] == 11, Primes[5] == 13. Список Rainbow состоит из 7 элементов, каждый из которых является строкой.

Также как и символы строки, элементы списка можно индексировать отрицательными числами с конца, например, Primes[-1] == 13, Primes[-6] == 2.

Длину списка, то есть количество элементов в нем, можно узнать при помощи функции len, например, len(A) == 6.

Рассмотрим несколько способов создания и считывания списков. Прежде всего можно создать пустой список (не содержащий элементов, длины 0), в конец списка можно добавлять элементы при помощи метода append. Например, если программа получает на вход количество элементов в списке n, а потом n элементов списка по одному в отдельной строке, то организовать считывание списка можно так:

A = []
for i in range(int(input()):
A.append(int(input())

В этом примере создается пустой список, далее считывается количество элементов в списке, затем по одному считываются элементы списка и добавляются в его конец.

Для списков целиком определены следующие операции: конкатенация списков (добавление одного списка в конец другого) и повторение списков (умножение списка на число). Например:

A = [1, 2, 3]
B = [4, 5]
C = A + B
D = B * 3

В результате список C будет равен [1, 2, 3, 4, 5], а список D будет равен [4, 5, 4, 5, 4, 5]. Это позволяет по-другому организовать процесс считывания списков: сначала считать размер списка и создать список из нужного числа элементов, затем организовать цикл по переменной i начиная с числа 0 и внутри цикла считывается i-й элемент списка:

A = [0] * int(input())
for i in range(len(A)):
A[i] = int(input())

Вывести элементы списка A можно одной инструкцией print(A), при этом будут выведены квадратные скобки вокруг элементов списка и запятые между элементами списка. Такой вывод неудобен, чаще требуется просто вывести все элементы списка в одну строку или по одному элементу в строке. Приведем два примера, также отличающиеся организацией цикла:

for i in range(len(A)): 
print(A[i])

Здесь в цикле меняется индекс элемента i, затем выводится элемент списка с индексом i.

for elem in A: 
print(elem, end = ' ')

В этом примере элементы списка выводятся в одну строку, разделенные пробелом, при этом в цикле меняется не индекс элемента списка, а само значение переменной (например, в цикле for elem in ['red', 'green', 'blue'] переменная elem будет последовательно принимать значения 'red', 'green', 'blue'.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *