Thứ sáu, 07/08/2020 | 00:00 GMT+7

Cách chuyển đổi kiểu dữ liệu trong Python 3

Trong Python, các kiểu dữ liệu được sử dụng để phân loại một kiểu dữ liệu cụ thể, xác định các giá trị mà bạn có thể gán cho kiểu và các thao tác bạn có thể thực hiện trên nó. Khi lập trình, đôi khi ta cần chuyển đổi các giá trị giữa các kiểu để thao tác các giá trị theo một cách khác. Ví dụ: ta có thể cần nối các giá trị số với chuỗi hoặc biểu diễn vị trí thập phân trong các số được khởi tạo dưới dạng giá trị số nguyên.

Hướng dẫn này sẽ hướng dẫn bạn chuyển đổi số, chuỗi, bộ giá trị và danh sách, cũng như cung cấp các ví dụ để giúp bạn làm quen với các trường hợp sử dụng khác nhau.

Chuyển đổi loại số

Trong Python, có hai kiểu dữ liệu số : số nguyênsố dấu phẩy động hoặc số thực . Đôi khi bạn đang làm việc trên mã của người khác và cần chuyển đổi một số nguyên thành một số thực hoặc ngược lại, hoặc bạn có thể thấy rằng mình đã sử dụng một số nguyên khi thứ bạn thực sự cần là một số thực. Python có các phương thức được tích hợp sẵn để cho phép bạn dễ dàng chuyển đổi số nguyên thành float và float thành số nguyên.

Chuyển đổi số nguyên thành số nổi

Phương thức float() của Python sẽ chuyển đổi số nguyên thành float. Để sử dụng hàm này, hãy thêm một số nguyên bên trong dấu ngoặc đơn:

float(57) 

Trong trường hợp này, 57 sẽ được chuyển thành 57.0 .

Bạn cũng có thể sử dụng điều này với một biến. Hãy khai báo f bằng 57 và sau đó in ra float mới:

f = 57 print(float(f)) 
Output
57.0

Bằng cách sử dụng hàm float() , ta có thể chuyển đổi số nguyên thành số float.

Chuyển đổi số thực sang số nguyên

Python cũng có một hàm tích hợp để chuyển đổi float thành số nguyên: int() .

Hàm int() hoạt động tương tự như hàm float() : bạn có thể thêm một số dấu phẩy động bên trong dấu ngoặc đơn để chuyển nó thành số nguyên:

int(390.8) 

Trong trường hợp này, 390.8 sẽ được chuyển đổi thành 390 .

Bạn cũng có thể sử dụng điều này với các biến. Hãy khai báo b bằng 125.0c bằng 390.8 , sau đó in ra các float mới:

b = 125.0 c = 390.8  print(int(b)) print(int(c)) 
Output
125 390

Khi chuyển đổi float thành số nguyên bằng hàm int() , Python sẽ cắt bỏ số thập phân và số còn lại của float để tạo một số nguyên. Mặc dù ta có thể cần làm tròn 390,8 thành 391, nhưng Python sẽ không làm điều này thông qua hàm int() .

Các con số được chuyển đổi qua bộ phận

Trong Python 3, các thương số có liên quan được chuyển đổi từ số nguyên thành số float khi thực hiện phép chia mặc dù chúng không có trong Python 2 . Nghĩa là, khi bạn chia 5 cho 2, trong Python 3, bạn sẽ nhận được một phao cho một câu trả lời (2,5):

a = 5 / 2 print(a) 
Output
2.5

Trong Python 2, vì bạn đang xử lý hai số nguyên, nên bạn sẽ nhận lại một số nguyên làm câu trả lời của bạn , thay vào đó: 5 / 2 = 2 . Đọc “ Python 2 và Python 3: Cân nhắc thực tế ” để biết thêm thông tin về sự khác biệt giữa Python 2 và Python 3.

Chuyển đổi bằng chuỗi

Chuỗi là một chuỗi gồm một hoặc nhiều ký tự (chữ cái, số, ký hiệu). Chuỗi là một dạng dữ liệu phổ biến trong các chương trình máy tính và ta có thể cần phải chuyển đổi chuỗi thành số hoặc số thành chuỗi khá thường xuyên, đặc biệt khi ta đang sử dụng dữ liệu do user tạo.

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

Ta có thể chuyển đổi số thành chuỗi thông qua sử dụng phương thức str() . Ta sẽ chuyển một số hoặc một biến vào dấu ngoặc đơn của phương thức và sau đó giá trị số đó sẽ được chuyển đổi thành giá trị chuỗi.

Đầu tiên ta hãy xem xét chuyển đổi số nguyên. Để chuyển đổi số nguyên 12 thành giá trị chuỗi, bạn có thể chuyển 12 vào phương thức str() :

str(12) 

Khi chạy str(12) trong shell tương tác Python với lệnh python trong cửa sổ terminal , bạn sẽ nhận được kết quả sau:

Output
'12'

Các dấu ngoặc kép xung quanh số 12 biểu thị rằng số không còn là một số nguyên nữa mà bây giờ là một giá trị chuỗi.

Với các biến, ta có thể bắt đầu thấy việc chuyển đổi số nguyên thành chuỗi thực tế như thế nào. Giả sử ta muốn theo dõi tiến trình lập trình hàng ngày của user và đang nhập bao nhiêu dòng mã họ viết cùng một lúc. Ta muốn hiển thị phản hồi này cho user và sẽ in ra các giá trị chuỗi và số nguyên cùng một lúc:

user = "Sammy" lines = 50  print("Congratulations, " + user + "! You just wrote " + lines + " lines of code.") 

Khi ta chạy mã này, ta nhận được lỗi sau:

Output
TypeError: Can't convert 'int' object to str implicitly

Ta không thể nối chuỗi và số nguyên trong Python, vì vậy ta sẽ phải chuyển đổi các lines biến thành giá trị chuỗi:

user = "Sammy" lines = 50  print("Congratulations, " + user + "! You just wrote " + str(lines) + " lines of code.") 

Bây giờ, khi ta chạy mã, ta nhận được kết quả sau chúc mừng user của ta về sự tiến bộ của họ:

Output
Congratulations, Sammy! You just wrote 50 lines of code.

Nếu ta đang tìm cách chuyển đổi một số thực thành một chuỗi thay vì một số nguyên thành một chuỗi, ta làm theo các bước và định dạng tương tự. Khi ta truyền một float vào phương thức str() , một giá trị chuỗi của float sẽ được trả về. Ta có thể sử dụng chính giá trị float hoặc một biến:

print(str(421.034))  f = 5524.53 print(str(f)) 
Output
421.034 5524.53

Ta có thể kiểm tra đảm bảo nó đúng bằng cách nối với một chuỗi:

f = 5524.53 print("Sammy has " + str(f) + " points.") 
Output
Sammy has 5524.53 points.

Ta có thể chắc chắn rằng float của ta đã được chuyển đổi đúng thành một chuỗi vì quá trình nối được thực hiện mà không có lỗi.

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

Các chuỗi có thể được chuyển đổi thành số bằng cách sử dụng phương thức int()float() .

Nếu chuỗi của bạn không có chữ số thập phân, rất có thể bạn cần chuyển nó thành số nguyên bằng cách sử dụng phương thức int() .

Hãy sử dụng ví dụ về user Sammy theo dõi các dòng mã được viết mỗi ngày. Ta có thể cần thao tác các giá trị đó bằng toán học để cung cấp phản hồi thú vị hơn cho user , nhưng những giá trị đó hiện được lưu trữ trong các chuỗi:

lines_yesterday = "50" lines_today = "108"  lines_more = lines_today - lines_yesterday  print(lines_more) 
Output
TypeError: unsupported operand type(s) for -: 'str' and 'str'

Bởi vì hai giá trị số được lưu trữ trong chuỗi, ta đã nhận được lỗi. Toán hạng - cho phép trừ không phải là một toán hạng hợp lệ cho hai giá trị chuỗi.

Hãy sửa đổi mã để bao gồm phương thức int() sẽ chuyển đổi các chuỗi thành số nguyên và cho phép ta thực hiện phép toán với các giá trị mà chúng là chuỗi ban đầu.

lines_yesterday = "50" lines_today = "108"  lines_more = int(lines_today) - int(lines_yesterday)  print(lines_more) 
Output
58

Biến lines_more tự động là một số nguyên và nó bằng giá trị số 58 trong ví dụ này.

Ta cũng có thể chuyển đổi các số trong ví dụ trên thành giá trị float bằng cách sử dụng phương thức float() phương thức int() . Thay vì nhận kết quả là 58 , ta sẽ nhận kết quả là 58.0 , một float.

User Sammy đang kiếm điểm bằng các giá trị thập phân

total_points = "5524.53" new_points = "45.30"  new_total_points = total_points + new_points  print(new_total_points) 
Output
5524.5345.30

Trong trường hợp này, sử dụng toán hạng + với hai chuỗi là một phép toán hợp lệ, nhưng nó đang nối hai chuỗi chứ không phải cộng hai giá trị số với nhau. Vì vậy, kết quả của ta trông không bình thường vì nó chỉ đặt hai giá trị cạnh nhau.

Ta sẽ muốn chuyển đổi các chuỗi này thành float trước khi thực hiện bất kỳ phép toán nào với phương thức float() :

total_points = "5524.53" new_points = "45.30"  new_total_points = float(total_points) + float(new_points)  print(new_total_points) 
Output
5569.83

Bây giờ ta đã chuyển đổi hai chuỗi thành float, ta nhận được kết quả dự đoán là thêm 45.30 thành 5524.53 .

Nếu ta cố gắng chuyển đổi giá trị chuỗi có chữ số thập phân thành số nguyên, ta sẽ nhận được lỗi:

f = "54.23" print(int(f)) 
Output
ValueError: invalid literal for int() with base 10: '54.23'

Nếu ta chuyển một giá trị thập phân trong một chuỗi vào phương thức int() ta sẽ nhận được lỗi vì nó sẽ không chuyển đổi thành số nguyên.

Chuyển đổi chuỗi thành số cho phép ta nhanh chóng sửa đổi kiểu dữ liệu mà ta đang làm việc để ta có thể thực hiện các hoạt động trên các giá trị số ban đầu được truyền dưới dạng chuỗi.

Chuyển đổi sang Tuples và Danh sách

Bạn có thể sử dụng list() phương thức list()tuple() để chuyển đổi các giá trị được chuyển cho chúng thành kiểu dữ liệu danh sách và tuple tương ứng. Trong Python:

  • danh sách là một chuỗi các phần tử có thứ tự có thể thay đổi được chứa trong dấu ngoặc vuông [ ] .
  • mộttuple là một chuỗi các phần tử có thứ tự bất biến nằm trong dấu ngoặc đơn ( ) .

Chuyển đổi sang Tuples

Hãy bắt đầu với việc chuyển đổi một danh sách thành một bộ. Việc chuyển đổi danh sách thành một bộ tuple, vì đó là kiểu dữ liệu bất biến, có thể cho phép tối ưu hóa đáng kể các chương trình mà ta tạo. Khi ta sử dụng phương thức tuple() nó sẽ trả về version tuple của giá trị được truyền cho nó.

print(tuple(['pull request', 'open source', 'repository', 'branch'])) 
Output
('pull request', 'open source', 'repository', 'branch')

Ta thấy rằng một tuple được in ra trong kết quả , vì các mục bây giờ được chứa trong dấu ngoặc đơn hơn là dấu ngoặc vuông.

Hãy sử dụng tuple() với một biến đại diện cho một danh sách:

sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp'] print(tuple(sea_creatures)) 
Output
('shark', 'cuttlefish', 'squid', 'mantis shrimp')

, ta thấy rằng giá trị danh sách được thay đổi thành giá trị tuple, được biểu thị bằng dấu ngoặc đơn. Ta có thể chuyển đổi bất kỳ kiểu có thể lặp lại nào thành một bộ tuple, bao gồm các chuỗi:

print(tuple('Sammy')) 
Output
('S', 'a', 'm', 'm', 'y')

Vì ta có thể lặp qua các chuỗi, nên ta có thể chuyển đổi chúng thành các tuple() phương thức tuple() . Tuy nhiên, với các kiểu dữ liệu không thể lặp lại, như số nguyên và số float, ta sẽ nhận được lỗi kiểu:

print(tuple(5000)) 
Output
TypeError: 'int' object is not iterable

Mặc dù có thể chuyển đổi số nguyên thành một chuỗi và sau đó chuyển đổi thành một tuple, như trong tuple(str(5000)) , tốt nhất nên chọn mã có thể đọc được thay vì chuyển đổi phức tạp.

Chuyển đổi sang danh sách

Chuyển đổi các giá trị, đặc biệt là các bộ giá trị, thành danh sách có thể hữu ích khi bạn cần có version có thể thay đổi của giá trị đó.

Ta sẽ sử dụng phương thức list() để chuyển đổi tuple sau đây thành một danh sách. Bởi vì cú pháp để tạo danh sách sử dụng dấu ngoặc đơn, hãy đảm bảo bao gồm dấu ngoặc đơn của phương thức list() và trong trường hợp này là cả phương thức print() :

print(list(('blue coral', 'staghorn coral', 'pillar coral'))) 
Output
['blue coral', 'staghorn coral', 'pillar coral']

Dấu ngoặc vuông báo hiệu rằng một danh sách đã được trả về từ giá trị tuple ban đầu đã được chuyển qua phương thức list() .

Để làm cho mã dễ đọc hơn, ta có thể xóa một trong các cặp dấu ngoặc đơn bằng cách sử dụng một biến:

coral = ('blue coral', 'staghorn coral', 'pillar coral') list(coral) 

Nếu ta in list(coral) ta sẽ nhận được kết quả tương tự như trên.

Cũng giống như bộ giá trị, chuỗi có thể được chuyển đổi thành danh sách:

print(list('shark')) 
Output
['s', 'h', 'a', 'r', 'k']

Ở đây, chuỗi 'shark' đã được chuyển đổi thành một danh sách, cung cấp một version có thể thay đổi của giá trị ban đầu.

Kết luận

Hướng dẫn Python này đã trình bày cách chuyển đổi một số kiểu dữ liệu root quan trọng sang các kiểu dữ liệu khác, chủ yếu thông qua các phương thức tích hợp sẵn. Có thể chuyển đổi các kiểu dữ liệu bằng Python cung cấp cho bạn sự linh hoạt hơn khi viết các chương trình của bạn .


Tags:

Các tin liên quan

Cách sử dụng hàm bản đồ Python
2020-08-03
Cách sử dụng quy trình con để chạy các chương trình bên ngoài trong Python 3
2020-07-30
Làm thế nào để đánh lừa một mạng neural trong Python 3
2020-07-30
Cách sử dụng hàm bộ lọc Python
2020-07-24
Cách sử dụng module pathlib để thao tác đường dẫn hệ thống tệp trong Python 3
2020-07-15
Cách tạo Slackbot bằng Python trên Ubuntu 20.04
2020-06-30
Cách sử dụng ThreadPoolExecutor trong Python 3
2020-06-23
Cách sử dụng module sqlite3 trong Python 3
2020-06-02
Cách thiết lập notebook Jupyter với Python 3 trên Ubuntu 20.04 và Kết nối qua Đường hầm SSH
2020-05-19
Cách cài đặt Phân phối Python Anaconda trên Ubuntu 20.04 [Khởi động nhanh]
2020-05-19