Python 3: Cấu trúc Dữ liệu và Toán tử Cơ bản

Toán tử

  • + - * / các phép tính cơ bản, % tính phần dư, ** lũy thừa
  • // dùng cho phép chia nguyên
>>> 7 % 3
1
>>> 5 ** 2
25
>>> 10 // 3
3

Chuỗi

  • Chuỗi được xác định bằng dấu ngoặc đơn hoặc kép.
  • Dùng ba dấu ngoặc (đơn hoặc kép) cho chuỗi đa dòng, kết hợp dấu gạch chéo ngược để loại bỏ xuống dòng.
  • Chuỗi nguyên (raw string) sử dụng tiền tố r.
  • Phép + nối chuỗi, * lặp chuỗi.
  • Chuỗi hỗ trợ cắt (slice) nhưng không thể thay đổi.
  • Chỉ số 0 trỏ đến phần tử đầu, -1 trỏ đến phần tử cuối.
>>> "test" * 2
'testtest'
>>> "py" "thon"
'python'
>>> print(r"Path\to\file")
Path\to\file
>>> print("""\
first
second\
""")
first
second
>>> "python"[2:4]
'to'
>>> "python"[:3]
'pyt'
>>> "python"[-3:]
'on'

Danh sách

  • Danh sách là cấu trúc dữ liệu có độ dài không giới hạn, phần tử cùng kiểu.
  • Sử dụng dấu ngoặc vuông và dấu phẩy.
  • Phép + nối danh sách, cắt (slice) cho phép thay đổi phần tử.
  • Chỉ số 0 trỏ đến phần tử đầu, -1 trỏ đến phần tử cuối.
>>> [10,20,30][1:]
[20, 30]
>>> [10,20,30][-2:]
[20, 30]
>>> items = [5,10,15,20]
>>> items[1:3] = [12,18]
>>> items
[5, 12, 18, 20]
>>> items[1:] = []
>>> items
[5]

Tuple

  • Tuple là cấu trúc dữ liệu không thay đổi, thứ tự và số lượng phần tử cố định.
  • Sử dụng dấu ngoặc tròn và dấu phẩy (ngoặc tròn ngoài có thể bỏ).
  • Không thể thay đổi giá trị.
  • Có tuple rỗng () và tuple một phần tử (x,).
>>> data = 42, "data"
>>> data[0]
42
>>> data[1]
'data'
>>> nested = data, 99
>>> nested
((42, 'data'), 99)
>>> singleton = 1,
>>> singleton
(1,)

Phương thức giải cấu trúc

>>> x, y = [10, 20]
>>> x, y
(10, 20)
>>> x, y = y, x
>>> x, y
(20, 10)

Bộ

  • Bộ là cấu trúc tập hợp không chứa phần tử trùng lặp.
  • Sử dụng dấu ngoặc nhọn và dấu phẩy.
  • Thao tác: hiệu, hợp, giao, đối xứng.
  • Có biểu thức giải bộ (set comprehensions).
>>> fruits = {'apple', 'banana', 'apple', 'orange'}
>>> fruits
{'apple', 'banana', 'orange'}
>>> set1 = set('banana')
>>> set2 = set('apple')
>>> set1 - set2
{'n', 'b'}
>>> set1 | set2
{'a', 'p', 'l', 'e', 'n', 'b', 'o'}
>>> {x for x in 'banana' if x not in 'ae'}
{'b', 'n'}

Từ điển

  • Từ điển lưu trữ cặp khóa-giá trị.
  • Sử dụng dấu ngoặc nhọn, dấu hai chấm và dấu phẩy.
  • Có biểu thức giải từ điển (dictionary comprehensions).
>>> inventory = {'apple': 5, 'banana': 3}
>>> inventory['apple']
5
>>> inventory['orange'] = 7
>>> inventory
{'apple': 5, 'banana': 3, 'orange': 7}
>>> {k: v*2 for k, v in inventory.items()}
{'apple': 10, 'banana': 6, 'orange': 14}

Hàm range

>>> list(range(1, 8, 2))
[1, 3, 5, 7]
>>> list(range(-5, -20, -5))
[-5, -10, -15]

Câu lệnh điều khiển

>>> for num in range(3, 15):
...     for divisor in range(2, num):
...         if num % divisor == 0:
...             print(f"{num} = {divisor} * {num//divisor}")
...             break
...     else:
...         print(f"{num} là số nguyên tố")
... 
3 là số nguyên tố
4 = 2 * 2
5 là số nguyên tố
6 = 2 * 3
7 là số nguyên tố
8 = 2 * 4
9 = 3 * 3
10 = 2 * 5
11 là số nguyên tố
12 = 2 * 6
13 là số nguyên tố
14 = 2 * 7

Hàm

  • Định nghĩa hàm bằng từ khóa def.
  • Tham số đặc biệt: tham số mặc định, *args, **kwargs.
  • Tham số thực tế: từ khóa, *args, **kwargs.
  • Hàm có thể lồng nhau.
>>> def multiply(factor, multiplier=2):
...     return factor * multiplier
... 
>>> multiply(5)
10
>>> multiply(5, 3)
15
>>> def process_data(*args, **kwargs):
...     print("Arguments:", args)
...     print("Keywords:", kwargs)
... 
>>> process_data(10, 20, name="test", value=100)
Arguments: (10, 20)
Keywords: {'name': 'test', 'value': 100}

Biểu thức lambda

>>> def make_adder(n):
...     return lambda x: x + n
... 
>>> adder = make_adder(100)
>>> adder(5)
105
>>> items = [(1, 'uno'), (2, 'dos'), (3, 'tres')]
>>> items.sort(key=lambda item: item[1])
>>> items
[(1, 'uno'), (2, 'dos'), (3, 'tres')]

Thẻ: python3 list-comprehensions set-operations dictionary-comprehensions tuple-unpacking

Đăng vào ngày 27 tháng 6 lúc 22:24