Các kiểu dữ liệu

Các kiểu dữ liệu trong Python được sử dụng để xác định kiểu của một biến. Nó xác định loại dữ liệu mà chúng ta sẽ lưu trữ trong một biến. Dữ liệu được lưu trữ trong bộ nhớ có thể có nhiều loại. Ví dụ, tuổi của một người được lưu trữ dưới dạng giá trị số và địa chỉ của họ được lưu trữ dưới dạng các ký tự và chữ số.

Python có các kiểu dữ liệu tích hợp sẵn khác nhau mà chúng ta sẽ thảo luận trong bài hướng dẫn này:

  • Số: int, float, complex
  • Chuỗi: str
  • Dãy: list, tuple, range
  • Nhị phân: bytes, bytearray, memoryview
  • Ánh xạ: dict
  • Boolean: bool
  • Tập hợp: set, frozenset
  • None: NoneType

Kiểu dữ liệu số trong Python

Kiểu dữ liệu số trong Python lưu trữ các giá trị số. Đối tượng số được tạo khi bạn gán một giá trị cho chúng. Ví dụ như sau -

var1 = 1
var2 = 10
var3 = 10.023

Python hỗ trợ bốn loại số khác nhau, bao gồm:

  • int (số nguyên có dấu)
  • long (số nguyên dài, chúng cũng có thể được biểu diễn dưới dạng - bát phân và thập lục phân)
  • float (giá trị số thực dấu chấm động)
  • complex (số phức)

Ví dụ:

Dưới đây là một số ví dụ về số

int long float complex
10 51924361L 0.0 3.14j
100 -0x19323L 15.20 45.j
-786 0122L -21.9 9.322e-36j
080 0xDEFABCECBDAECBFBAEl 32.3+e18 .876j
-0490 535633629843L -90. -.6545+0J
-0x260 -052318172735L -32.54e100 3e+26J
0x69 -4721885298529L 70.2-E12 4.53e-7j
  • Python cho phép bạn sử dụng chữ thường “l” với kiểu số long, nhưng khuyến khích bạn chỉ sử dụng chữ in hoa “L” để tránh nhầm lẫn với số 1. Python hiển thị số nguyên dài với chữ in hoa “L”.

  • Một số phức bao gồm một cặp số thực dấu chấm động theo thứ tự x + yj, trong đó x và y là số thực và j là đơn vị ảo.

Ví dụ:

Dưới đây là một ví dụ để minh họa việc sử dụng các số nguyên, số thực và số phức:

# integer variable.
a=100
print("The type of variable having value", a, " is ", type(a))

# float variable.
b=20.345
print("The type of variable having value", b, " is ", type(b))

# complex variable.
c=10+3j
print("The type of variable having value", c, " is ", type(c))

Kết quả

The type of variable having value 100  is  <class 'int'>
The type of variable having value 20.345  is  <class 'float'>
The type of variable having value (10+3j)  is  <class 'complex'>

Kiểu dữ liệu chuỗi trong Python

Chuỗi trong Python được xác định là một tập hợp liên tục các ký tự được biểu diễn trong dấu ngoặc kép hoặc ngoặc đơn. Python cho phép sử dụng cặp dấu ngoặc đơn hoặc kép. Các phần con của chuỗi có thể được lấy bằng toán tử slice ([ ] và [:]) với các chỉ mục bắt đầu từ 0 ở đầu chuỗi và di chuyển đến -1 ở cuối chuỗi.

Dấu cộng (+) là toán tử nối chuỗi và dấu sao (*) là toán tử lặp lại trong Python. Ví dụ:

str = 'Hello World!'

print (str)          # Prints complete string
print (str[0])       # Prints first character of the string
print (str[2:5])     # Prints characters starting from 3rd to 5th
print (str[2:])      # Prints string starting from 3rd character
print (str * 2)      # Prints string two times
print (str + "TEST") # Prints concatenated string

Kết quả

Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST

Kiểu dữ liệu List trong Python

List trong Python là kiểu dữ liệu phức hợp linh hoạt nhất. Một danh sách Python chứa các mục được phân tách bằng dấu phẩy và được bao quanh bởi dấu ngoặc vuông ([]). Đến một mức độ nào đó, danh sách Python tương tự như các mảng trong C. Một khác biệt giữa chúng là tất cả các mục thuộc một danh sách Python có thể có kiểu dữ liệu khác nhau trong khi mảng C chỉ có thể lưu trữ các phần tử liên quan đến một kiểu dữ liệu cụ thể.

Các giá trị được lưu trữ trong một danh sách Python có thể được truy cập bằng toán tử slice ([ ] và [:]) với các chỉ mục bắt đầu từ 0 ở đầu danh sách và di chuyển đến end - 1. Dấu cộng (+) là toán tử nối danh sách và dấu sao (*) là toán tử lặp lại. Ví dụ:

list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']

print (list)            # Prints complete list
print (list[0])         # Prints first element of the list
print (list[1:3])       # Prints elements starting from 2nd till 3rd 
print (list[2:])        # Prints elements starting from 3rd element
print (tinylist * 2)    # Prints list two times
print (list + tinylist) # Prints concatenated lists

Kết quả

['abcd', 786, 2.23, 'john', 70.2]
abcd
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['abcd', 786, 2.23, 'john', 70.2, 123, 'john']

Kiểu dữ liệu Tuple trong Python

Tuple trong Python là một kiểu dữ liệu chuỗi khác tương tự như list. Một tuple trong Python bao gồm một số giá trị được phân tách bằng dấu phẩy. Tuy nhiên, khác với list, tuple được bao quanh bởi các dấu ngoặc đơn.

Sự khác biệt chính giữa list và tuple là: List được bao quanh bởi dấu ngoặc vuông ([ ]) và các phần tử và kích thước của nó có thể thay đổi, trong khi tuple được bao quanh bởi dấu ngoặc đơn (( )) và không thể được cập nhật. Tuple có thể được xem như là danh sách chỉ đọc. Ví dụ:

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )
tinytuple = (123, 'john')

print (tuple)               # Prints the complete tuple
print (tuple[0])            # Prints first element of the tuple
print (tuple[1:3])          # Prints elements of the tuple starting from 2nd till 3rd 
print (tuple[2:])           # Prints elements of the tuple starting from 3rd element
print (tinytuple * 2)       # Prints the contents of the tuple twice
print (tuple + tinytuple)   # Prints concatenated tuples

Kết quả

('abcd', 786, 2.23, 'john', 70.2)
abcd
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('abcd', 786, 2.23, 'john', 70.2, 123, 'john')

Đoạn mã sau không hợp lệ với tuple, bởi vì chúng ta đã cố gắng cập nhật một tuple, điều này không được phép. Tuy nhiên chúng ta có thể thực hiện tương tự cũng với list

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )
list = [ 'abcd', 786 , 2.23, 'john', 70.2  ]
tuple[2] = 1000    # Invalid syntax with tuple
list[2] = 1000     # Valid syntax with list

Phạm vi (Range) trong Python

Hàm range() trong Python là một hàm tích hợp sẵn trong Python trả về một chuỗi các số bắt đầu từ 0 và tăng lên 1 cho đến khi nó đạt đến một số được chỉ định.

Chúng ta sử dụng hàm range() với vòng lặp for và while để tạo ra một chuỗi các số. Sau đây là cú pháp của hàm:

range(start, stop, step)

Đây là mô tả các tham số được sử dụng:

  • start: số nguyên để chỉ định vị trí bắt đầu (tùy chọn, mặc định: 0)
  • stop: số nguyên để chỉ định vị trí kết thúc (bắt buộc)
  • step: số nguyên để chỉ định bước nhảy (tùy chọn, mặc định: 1)

    Ví dụ:

Dưới đây là một chương trình sử dụng vòng lặp for để in ra các số từ 0 đến 4:

for i in range(5):
print(i)

Điều này cho kết quả như sau −

0
1
2
3
4

Bây giờ chúng ta sửa đổi chương trình trên để in số bắt đầu từ 1 thay vì 0:

for i in range(1, 5):
print(i)

Điều này cho kết quả như sau −

1
2
3
4

Một lần nữa, chúng ta sửa đổi chương trình để in số bắt đầu từ 1 nhưng với bước nhảy là 2 thay vì 1:

for i in range(1, 5, 2):
print(i)

Điều này cho kết quả như sau −

1
3

Từ điển (Dictionary) trong Python

Từ điển (dictionary) trong Python là một loại bảng băm (hash table). Chúng hoạt động giống như các mảng kết hợp hoặc bảng băm được tìm thấy trong Perl và bao gồm các cặp khóa-giá trị. Một khóa từ điển có thể là bất kỳ kiểu dữ liệu Python nào, nhưng thường là số hoặc chuỗi. Giá trị, åthì có thể là bất kỳ đối tượng Python tùy ý nào.

Từ điển được bao quanh bởi các dấu ngoặc nhọn ({}) và giá trị có thể được gán và truy cập bằng cách sử dụng dấu ngoặc vuông ([]). Ví dụ:

dict = {}
dict['one'] = "This is one"
dict[2]     = "This is two"

tinydict = {'name': 'john','code':6734, 'dept': 'sales'}


print (dict['one'])       # Prints value for 'one' key
print (dict[2])           # Prints value for 2 key
print (tinydict)          # Prints complete dictionary
print (tinydict.keys())   # Prints all the keys
print (tinydict.values()) # Prints all the values

Kết quả

This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']

Từ điển Python không có khái niệm về thứ tự giữa các phần tử. Nó là không chính xác nếu nói rằng các phần tử “không theo thứ tự”; chúng chỉ đơn giản là không có thứ tự.

Kiểu dữ liệu boolean trong Python

Kiểu dữ liệu boolean trong Python là một trong những kiểu dữ liệu tích hợp sẵn, đại diện cho một trong hai giá trị True hoặc False. Hàm bool() trong Python cho phép bạn đánh giá giá trị của bất kỳ biểu thức nào và trả về True hoặc False dựa trên biểu thức đó.

Ví dụ

Sau đây là một chương trình in giá trị các biến boolean a và b.

a = True
# display the value of a
print(a)

# display the data type of a
print(type(a))

Kết quả

true
<class 'bool'>

Sau đây là một chương trình khác đánh giá các biểu thức và in các giá trị trả về:

# Returns false as a is not equal to b
a = 2
b = 4
print(bool(a==b))

# Following also prints the same
print(a==b)

# Returns False as a is None
a = None
print(bool(a))

# Returns false as a is an empty sequence
a = ()
print(bool(a))

# Returns false as a is 0
a = 0.0
print(bool(a))

# Returns false as a is 10
a = 10
print(bool(a))

Kết quả

False
False
False
False
False
True

Chuyển đổi kiểu dữ liệu trong Python

Đôi khi, bạn có thể cần thực hiện chuyển đổi giữa các kiểu dữ liệu tích hợp sẵn. Để chuyển đổi dữ liệu giữa các kiểu dữ liệu Python khác nhau, bạn chỉ cần sử dụng tên kiểu như một hàm.

Chuyển đổi thành kiểu int

Dưới đây là một ví dụ để chuyển đổi số, số thực và chuỗi thành kiểu dữ liệu số nguyên.

a = int(1)     # a will be 1
b = int(2.2)   # b will be 2
c = int("3")   # c will be 3

print (a)
print (b)
print (c)

Kết quả

1
2
3

Chuyển đổi thành kiểu float

Dưới đây là một ví dụ để chuyển đổi số, số thực và chuỗi thành kiểu dữ liệu số thực.

a = float(1)     # a will be 1.0
b = float(2.2)   # b will be 2.2
c = float("3.3") # c will be 3.3

print (a)
print (b)
print (c)

Kết quả

1.0
2.2
3.3

Chuyển đổi thành kiểu string

Dưới đây là một ví dụ để chuyển đổi số, số thực và chuỗi thành kiểu dữ liệu chuỗi.

a = str(1)     # a will be "1" 
b = str(2.2)   # b will be "2.2"
c = str("3.3") # c will be "3.3"

print (a)
print (b)
print (c)

Kết quả

1
2.2
3.3

Các hàm chuyển đổi kiểu dữ liệu

Có một số hàm tích hợp sẵn để thực hiện chuyển đổi từ một kiểu dữ liệu sang kiểu dữ liệu khác. Các hàm này trả về một đối tượng mới đại diện cho giá trị đã được chuyển đổi.

Cú pháp hàm Giải thích Ví dụ
int(x [,base]) Chuyển đổi x thành một số nguyên. base chỉ định cơ số nếu x là một chuỗi. int('10') trả về 10
long(x [,base]) Chuyển đổi x thành một số nguyên dài. base chỉ định cơ số nếu x là một chuỗi. long('1000000000000000000') trả về 1000000000000000000L
float(x) Chuyển đổi x thành một số dấu phẩy động. float(3) trả về 3.0
complex(real [,imag]) Tạo một số phức. complex(1,2) trả về (1+2j)
str(x) Chuyển đổi đối tượng x thành một chuỗi. str(3.14) trả về '3.14'
repr(x) Chuyển đổi đối tượng x thành một chuỗi biểu thức. repr(3.14) trả về '3.1400000000000001'
eval(str) Đánh giá một chuỗi và trả về một đối tượng. eval('3+4') trả về 7
tuple(s) Chuyển đổi s thành một tuple. tuple([1,2,3]) trả về (1, 2, 3)
list(s) Chuyển đổi s thành một list. list((1,2,3)) trả về [1, 2, 3]
set(s) Chuyển đổi s thành một set. set([1,2,2,3,3,3]) trả về {1, 2, 3}
dict(d) Tạo một từ điển. d phải là một chuỗi các cặp (khóa,giá trị). dict([(1,'one'),(2,'two')]) trả về {1: 'one', 2: 'two'}
frozenset(s) Chuyển đổi s thành một frozenset. frozenset([1,2,3]) trả về frozenset({1, 2, 3})
chr(x) Chuyển đổi một số nguyên thành một ký tự. chr(97) trả về 'a'
unichr(x) Chuyển đổi một số nguyên thành một ký tự Unicode. unichr(12354) trả về u'あ'
ord(x) Chuyển đổi một ký tự thành giá trị số nguyên tương ứng của nó. ord('a') trả về 97
hex(x) Chuy  
hex(x) Chuyển đổi một số nguyên thành một chuỗi số hex. hex(255) trả về '0xff'
oct(x) Chuyển đổi một số nguyên thành một chuỗi số octal. oct(8) trả về '010'

Các hàm này cho phép chuyển đổi các kiểu dữ liệu khác nhau trong Python, giúp cho việc xử lý dữ liệu trở nên dễ dàng hơn. Chẳng hạn, nếu ta muốn chuyển một số nguyên sang dạng chuỗi thì có thể sử dụng hàm str(), hoặc nếu muốn chuyển một chuỗi sang số nguyên thì sử dụng hàm int(). Tương tự với các kiểu dữ liệu khác như list, tuple, set, dictionary, … Chú ý rằng các hàm này có thể có tham số khác nhau, như base trong hàm int(), hoặc real và imag trong hàm complex().

Bình luận