Следующее содержание вместе с примером кода объясняет, как преобразовывать списки (массивы) строк (str) и списки чисел (int, float) друг в друга в Python.
- Преобразование списка чисел в список строк
- Преобразование числа в десятичную строку
- Преобразование числовых значений в двоичные, восьмеричные и шестнадцатеричные строки
- Преобразование числового значения в строку в экспоненциальной нотации
- Преобразование списка строк в список чисел
- Преобразование десятичной строки в числовую
- Преобразование двоичных, восьмеричных и шестнадцатеричных строк в числа
- Преобразование строк в экспоненциальной нотации в числовые значения
- Преобразуйте только строки, которые можно преобразовать в числа
При генерации нового списка из списка, списковые понимания проще в написании, чем циклы for. В примере кода в этой статье также используются понимания списков. Подробнее об осмыслении списков см. в следующей статье.
- СООТВЕТСТВУЮЩИЕ:Как использовать понимание списков в Python
Обратите внимание, что списки могут хранить различные типы данных и строго отличаются от массивов. В следующих случаях используйте массив (стандартная библиотека) или NumPy.
- Я хочу обрабатывать процессы, которые требуют размер памяти и адреса памяти.
- Хотите работать с массивами для численной обработки больших массивов данных и т.д.
Преобразование списка чисел в список строк
Преобразование числа в десятичную строку
Используйте str() для преобразования числового значения в строковое.
В Python числа могут быть выражены в различных форматах, включая экспоненциальный, шестнадцатеричный и двоичный (шестнадцатеричная и двоичная нотация). Преобразование str() приводит к получению строки в обычной десятичной нотации.
В зависимости от количества цифр, экспоненциальная нотация может быть использована автоматически.
l_n = [-0.5, 0, 1.0, 100, 1.2e-2, 0xff, 0b11]
l_n_str = [str(n) for n in l_n]
print(l_n_str)
# ['-0.5', '0', '1.0', '100', '0.012', '255', '3']
Преобразование числовых значений в двоичные, восьмеричные и шестнадцатеричные строки
Для преобразования в двоичную, восьмеричную или шестнадцатеричную (двоичная нотация, восьмеричная нотация или шестнадцатеричная нотация) строки доступны следующие методы.
bin()
oct()
hex()
format()
str.format()
С помощью функции format() можно заполнять нули и корректировать цифры.
l_i = [0, 64, 128, 192, 256]
l_i_hex1 = [hex(i) for i in l_i]
print(l_i_hex1)
# ['0x0', '0x40', '0x80', '0xc0', '0x100']
l_i_hex2 = [format(i, '04x') for i in l_i]
print(l_i_hex2)
# ['0000', '0040', '0080', '00c0', '0100']
l_i_hex3 = [format(i, '#06x') for i in l_i]
print(l_i_hex3)
# ['0x0000', '0x0040', '0x0080', '0x00c0', '0x0100']
Преобразование числового значения в строку в экспоненциальной нотации
Как упоминалось выше, некоторые случаи могут автоматически приводиться в экспоненциальную нотацию в зависимости от количества цифр. Однако, чтобы всегда преобразовывать строку в экспоненциальную нотацию, используйте один из следующих способов
format()
str.format()
Более подробную информацию о функции format() и строковом методе str.format() см. в следующей статье.
- СООТВЕТСТВУЮЩИЕ:Преобразование формата в Python, формат (0-заполнение, экспоненциальная нотация, шестнадцатеричная и т.д.)
Можно указать количество цифр мантиссы. Если в качестве аргумента используется прописная буква E, выходной строкой также будет прописная буква E.
l_f = [0.0001, 123.456, 123400000]
l_f_e1 = [format(f, 'e') for f in l_f]
print(l_f_e1)
# ['1.000000e-04', '1.234560e+02', '1.234000e+08']
l_f_e2 = [format(f, '.3E') for f in l_f]
print(l_f_e2)
# ['1.000E-04', '1.235E+02', '1.234E+08']
Преобразование списка строк в список чисел
Преобразование десятичной строки в числовую
Используйте int() или float() для преобразования строки в число.
int() — это преобразование в целое число, а float() — преобразование в число с плавающей точкой.
В float() строки с опущенной целочисленной частью дополняются 0 для целочисленной части.
l_si = ['-10', '0', '100']
l_si_i = [int(s) for s in l_si]
print(l_si_i)
# [-10, 0, 100]
l_sf = ['.123', '1.23', '123']
l_sf_f = [float(s) for s in l_sf]
print(l_sf_f)
# [0.123, 1.23, 123.0]
Преобразование двоичных, восьмеричных и шестнадцатеричных строк в числа
Вторым аргументом функции int() может быть радикс: 2 для двоичного, 8 для восьмеричного и 16 для шестнадцатеричного, преобразуя строку в число.
Если указано 0, каждая из следующих строк с префиксом преобразуется в целое число.
0b
- двоичные цифры
0o
- восьмеричный
0x
- шестнадцатеричная
- СООТВЕТСТВУЮЩИЕ:Преобразование двоичных, восьмеричных и шестнадцатеричных чисел и строк друг в друга в Python
l_sb = ['0011', '0101', '1111']
l_sb_i = [int(s, 2) for s in l_sb]
print(l_sb_i)
# [3, 5, 15]
l_sbox = ['100', '0b100', '0o77', '0xff']
l_sbox_i = [int(s, 0) for s in l_sbox]
print(l_sbox_i)
# [100, 4, 63, 255]
Преобразование строк в экспоненциальной нотации в числовые значения
Строки в экспоненциальной нотации могут быть преобразованы непосредственно с помощью float() без необходимости специальной спецификации.
l_se = ['1.23e3', '0.123e-1', '123']
l_se_f = [float(s) for s in l_se]
print(l_se_f)
# [1230.0, 0.0123, 123.0]
Преобразуйте только строки, которые можно преобразовать в числа
Передача строки, которая не может быть преобразована в число, в функции int() или float() приведет к ошибке ValueError.
Если определена новая функция, возвращающая false при ошибке, только элементы, которые могут быть преобразованы, могут быть преобразованы в числа и стать элементами списка.
def is_int(s):
try:
int(s)
except ValueError:
return False
else:
return True
def is_float(s):
try:
float(s)
except ValueError:
return False
else:
return True
l_multi = ['-100', '100', '1.23', '1.23e2', 'one']
l_multi_i = [int(s) for s in l_multi if is_int(s)]
print(l_multi_i)
# [-100, 100]
l_multi_f = [float(s) for s in l_multi if is_float(s)]
print(l_multi_f)
# [-100.0, 100.0, 1.23, 123.0]