Chuyển đổi danh sách chuỗi (mảng) và danh sách số cho nhau bằng Python

Kinh doanh

Nội dung sau đây, cùng với mã mẫu, giải thích cách chuyển đổi danh sách (mảng) chuỗi (str) và danh sách số (int, float) cho nhau trong Python.

  • Chuyển đổi danh sách số thành danh sách chuỗi
    • Chuyển một số thành chuỗi thập phân
    • Chuyển đổi các giá trị số thành chuỗi nhị phân, bát phân và thập lục phân
    • Chuyển đổi một giá trị số thành một chuỗi trong ký hiệu hàm mũ
  • Chuyển danh sách chuỗi thành danh sách số
    • Chuyển đổi chuỗi thập phân thành số
    • Chuyển đổi chuỗi nhị phân, bát phân và thập lục phân thành số
    • Chuyển đổi các chuỗi ký hiệu hàm mũ thành các giá trị số
    • Chỉ chuyển đổi các chuỗi có thể được chuyển đổi thành số

Khi tạo một danh sách mới từ một danh sách, phần hiểu danh sách dễ viết hơn các vòng lặp for. Mã mẫu trong bài viết này cũng sử dụng cách hiểu danh sách. Để biết chi tiết về cách hiểu danh sách, hãy xem bài viết sau.

Lưu ý rằng danh sách có thể lưu trữ các loại dữ liệu khác nhau và hoàn toàn khác với mảng. Sử dụng mảng (thư viện chuẩn) hoặc NumPy trong các trường hợp sau.

  • Tôi muốn xử lý các quy trình yêu cầu kích thước bộ nhớ và địa chỉ bộ nhớ.
  • Muốn xử lý mảng để xử lý số các tập dữ liệu lớn, v.v.

Chuyển đổi danh sách số thành danh sách chuỗi

Chuyển một số thành chuỗi thập phân

Sử dụng str () để chuyển đổi từ số sang chuỗi.

Trong Python, các số có thể được thể hiện ở nhiều định dạng khác nhau, bao gồm hàm mũ, hệ thập lục phân và nhị phân (ký hiệu thập lục phân và nhị phân). Chuyển đổi str () dẫn đến một chuỗi ở dạng ký hiệu thập phân bình thường.

Tùy thuộc vào số lượng chữ số, ký hiệu hàm mũ có thể được sử dụng tự động.

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']

Chuyển đổi các giá trị số thành chuỗi nhị phân, bát phân và thập lục phân

Để chuyển đổi sang chuỗi nhị phân, bát phân hoặc thập lục phân (ký hiệu nhị phân, ký hiệu bát phân hoặc ký hiệu thập lục phân), các phương pháp sau đây khả dụng.

  • bin()
  • oct()
  • hex()
  • format()
  • str.format()

Với hàm format (), có thể điền các số không và điều chỉnh các chữ số.

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']

Chuyển đổi một giá trị số thành một chuỗi trong ký hiệu hàm mũ

Như đã đề cập ở trên, một số trường hợp có thể tự động ở dạng ký hiệu hàm mũ tùy thuộc vào số lượng chữ số. Tuy nhiên, để luôn chuyển đổi thành một chuỗi trong ký hiệu hàm mũ, hãy sử dụng một trong các cách sau

  • format()
  • str.format()

Để biết thêm thông tin về hàm format () và phương thức chuỗi str.format (), hãy xem bài viết sau.

Số chữ số của phần định trị có thể được chỉ định. Nếu chữ hoa E được sử dụng làm đối số, chuỗi đầu ra cũng là chữ hoa 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']

Chuyển danh sách chuỗi thành danh sách số

Chuyển đổi chuỗi thập phân thành số

Sử dụng int () hoặc float () để chuyển đổi từ chuỗi thành số.

int () là một chuyển đổi thành một số nguyên và float () là một chuyển đổi thành một số dấu phẩy động.

Trong float (), các chuỗi có phần nguyên bị bỏ qua được bổ sung bằng 0 cho phần nguyên.

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]

Chuyển đổi chuỗi nhị phân, bát phân và thập lục phân thành số

Đối số thứ hai của int () có thể là một cơ số: 2 cho nhị phân, 8 cho bát phân và 16 cho thập lục phân, chuyển đổi một chuỗi thành một số.

Nếu 0 được chỉ định, mỗi chuỗi có tiền tố sau được chuyển đổi thành số nguyên.

  • 0b
    • chữ số nhị phân
  • 0o
    • bát phân
  • 0x
    • hệ thập lục phân
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]

Chuyển đổi các chuỗi ký hiệu hàm mũ thành các giá trị số

Các chuỗi trong ký hiệu hàm mũ có thể được chuyển đổi trực tiếp với float () mà không cần thông số kỹ thuật đặc biệt.

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]

Chỉ chuyển đổi các chuỗi có thể được chuyển đổi thành số

Truyền một chuỗi không thể chuyển đổi thành số thành int () hoặc float () sẽ dẫn đến Lỗi giá trị.

Nếu một hàm mới được xác định trả về false do lỗi, thì chỉ các phần tử có thể chuyển đổi mới có thể được chuyển đổi thành số và trở thành phần tử của danh sách.

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]