Hướng dẫn difference between string and tuple in python - sự khác biệt giữa chuỗi và tuple trong python

Bốn loại đối tượng chính bạn sẽ làm việc là chuỗi, danh sách, từ điển và bộ dữ liệu. Biết cách thao túng các đối tượng này là vô cùng quan trọng trong Python. Trước khi thảo luận chi tiết về từng đối tượng, tôi muốn đưa ra một cái nhìn tổng quan về bốn đối tượng.

Show
 sợi dâydanh sáchtừ điểnTuple
Bất biến hay có thể thay đổi?bất biếncó thể thay đổicó thể thay đổibất biến
có thể thay đổiĐược lập chỉ mục bởi?Được lập chỉ mục bởi?số nguyênĐược lập chỉ mục bởi?
số nguyênbất kỳ loại bất biếnbất kỳ loại bất biếnngười vận hành + và *?bất kỳ loại bất biến
người vận hành + và *?bất kỳ loại bất biếnbất kỳ loại bất biếnbất kỳ loại bất biếnbất kỳ loại bất biến
người vận hành + và *?bất kỳ loại bất biếnbất kỳ loại bất biếnbất kỳ loại bất biếnngười vận hành + và *?

Definitions:

  • Đúng
  • Không
  • >>> len(['a', 'b', 'c', 'd'])
    4
    >>> len((2, 4, 6, 8, 10, 12))
    6
    >>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
    >>> len(pairs)
    3
    
    5 Nhà điều hành?keys and values where there is a mapping between a given key and its corresponding value. There is no order to the set of keys and values.
  • Áp dụng phương pháp?

Một chuỗi là một chuỗi các ký tự.

  • Danh sách một chuỗi các giá trị có thể là ký tự, số nguyên hoặc thậm chí một danh sách khác (được gọi là danh sách lồng nhau).immutable. When using strings, bracket operators cannot be used on the left side of an assignment with the intention of changing that string.
  • Từ điển là một phiên bản tổng quát hơn của một danh sách và được tạo thành một tập hợp các khóa và giá trị trong đó có ánh xạ giữa một khóa nhất định và giá trị tương ứng của nó. Không có thứ tự cho tập hợp các khóa và giá trị.mutable. Unlike strings, you can use the bracket operator on the left side of the assignment to change an element in a given list.
  • Một tuple là một chuỗi các giá trị (bất kỳ loại nào) làm cho chúng tương tự như danh sách, nhưng sự khác biệt là chúng là bất biến.mutable. You can modify any item (key-value pair) in a dictionary using the bracket operator on the left side of the assignment.
  • Immutable Vs có thể thay đổi:immutable. You can extract elements, but you cannot modify elements of a tuple on the left side of the assignment operator.

Chuỗi là bất biến. Khi sử dụng chuỗi, các toán tử khung không thể được sử dụng ở phía bên trái của một gán với mục đích thay đổi chuỗi đó.

Danh sách là có thể thay đổi. Không giống như chuỗi, bạn có thể sử dụng toán tử khung ở phía bên trái của nhiệm vụ để thay đổi một phần tử trong một danh sách nhất định.

  • Từ điển là có thể thay đổi. Bạn có thể sửa đổi bất kỳ mục nào (cặp giá trị khóa) trong từ điển bằng toán tử khung ở phía bên trái của bài tập.
  • Tuples là bất biến. Bạn có thể trích xuất các yếu tố, nhưng bạn không thể sửa đổi các phần tử của một bộ dữ liệu ở phía bên trái của toán tử gán.

Toán tử
>>> len(['a', 'b', 'c', 'd'])
4
>>> len((2, 4, 6, 8, 10, 12))
6
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> len(pairs)
3
5:

Toán tử

>>> len(['a', 'b', 'c', 'd'])
4
>>> len((2, 4, 6, 8, 10, 12))
6
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> len(pairs)
3
5 (và toán tử
>>> len(['a', 'b', 'c', 'd'])
4
>>> len((2, 4, 6, 8, 10, 12))
6
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> len(pairs)
3
8) là một toán tử Boolean thực hiện hai đối số xác định xem đối số thứ nhất có phải là phần phụ hay phần tử của đối số thứ hai hay không.

  • Khi so sánh hai chuỗi, toán tử tìm kiếm nếu chuỗi đầu tiên xuất hiện dưới dạng chuỗi con trong lần thứ hai và trả về
    >>> len(['a', 'b', 'c', 'd'])
    4
    >>> len((2, 4, 6, 8, 10, 12))
    6
    >>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
    >>> len(pairs)
    3
    
    9 hoặc
    >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0]
    >>> last = seq[len(seq)]       # ERROR!
    
    0.
  • Nếu đối số thứ hai là danh sách, toán tử có thể lấy hai chuỗi và danh sách để xem chuỗi có xuất hiện dưới dạng một trong các phần tử trong danh sách và trả về
    >>> len(['a', 'b', 'c', 'd'])
    4
    >>> len((2, 4, 6, 8, 10, 12))
    6
    >>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
    >>> len(pairs)
    3
    
    9 hoặc
    >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0]
    >>> last = seq[len(seq)]       # ERROR!
    
    0 không.
  • Hàm len:
  • Hàm
    >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0]
    >>> last = seq[len(seq)]       # ERROR!
    
    3 có thể được sử dụng để:

Tính độ dài của chuỗi

Tính số lượng các phần tử trong danh sáchdot notation. The syntax is the name of the objects followed by a dot (or period) followed by the name of the method.

x = "Hello Boston!"
x.split()

Tính số lượng các mục (cặp giá trị khóa) trong từ điển

Tính toán các phần tử số trong tuple

Các phương thức cho từng loại đối tượng (ký hiệu dấu chấm)

  1. Đối với chuỗi, danh sách và từ điển, có tập hợp các phương thức bạn có thể sử dụng để thao tác các đối tượng. Bởi vì các bộ dữ liệu là bất biến, không có phương pháp nào để sửa đổi các đối tượng. Nói chung, ký hiệu cho các phương thức là ký hiệu dấu chấm. Cú pháp là tên của các đối tượng theo sau là một dấu chấm (hoặc khoảng thời gian) theo sau là tên của phương thức.
  2. Ở đây chúng tôi sử dụng phương thức
    >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0]
    >>> last = seq[len(seq)]       # ERROR!
    
    4 được áp dụng cho một chuỗi (biến điều này thành phương thức chuỗi). Phương thức phân tách chuỗi tại một dấu phân cách nhất định (trong trường hợp này là không gian trắng).
  3. Khi nào nên sử dụng đối tượng nào?

Trong các trang tiếp theo, tôi sẽ so sánh và đối chiếu sự tương đồng và khác biệt của chuỗi, danh sách, từ điển và bộ dữ liệu chi tiết hơn. Nói chung, các danh sách phổ biến hơn các bộ dữ liệu (chủ yếu là vì chúng có thể thay đổi), nhưng có một vài lý do tại sao các bộ đếm có thể được ưa thích hơn:

Trong một số bối cảnh, giống như một câu lệnh trả về, việc tạo một tuple đơn giản hơn về mặt cú pháp hơn là một danh sách. Trong các bối cảnh khác, bạn có thể thích một danh sách.

3.1. Các loại dữ liệu trình tựSequence data types¶

Chương trước, chúng tôi đã giới thiệu các loại tích hợp Python,

>>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0]
>>> last = seq[len(seq)]       # ERROR!
6,
>>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0]
>>> last = seq[len(seq)]       # ERROR!
7 và
>>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0]
>>> last = seq[len(seq)]       # ERROR!
8, và chúng tôi tình cờ thấy
>>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0]
>>> last = seq[len(seq)]       # ERROR!
9.

Số nguyên và phao là các loại số, có nghĩa là chúng giữ số. Chúng ta có thể sử dụng các toán tử số mà chúng ta đã thấy chương cuối cùng với chúng để tạo thành các biểu thức số. Trình thông dịch Python sau đó có thể đánh giá các biểu thức này để tạo ra các giá trị số, làm cho Python trở thành một máy tính rất mạnh.numeric types, which means they hold numbers. We can use the numeric operators we saw last chapter with them to form numeric expressions. The Python interpreter can then evaluate these expressions to produce numeric values, making Python a very powerful calculator.

Chuỗi, danh sách và bộ dữ liệu đều là các loại trình tự, vì vậy được gọi là vì chúng hoạt động như một chuỗi - một bộ sưu tập các đối tượng được đặt hàng.sequence types, so called because they behave like a sequence - an ordered collection of objects.

Các loại squence khác nhau về mặt chất lượng với các loại số vì chúng là loại dữ liệu hỗn hợp - có nghĩa là chúng được tạo thành từ các mảnh nhỏ hơn. Trong trường hợp chuỗi, chúng được tạo thành từ các chuỗi nhỏ hơn, mỗi chuỗi chứa một ký tự. Ngoài ra còn có chuỗi trống, không chứa ký tự nào cả.compound data types - meaning they are made up of smaller pieces. In the case of strings, they’re made up of smaller strings, each containing one character. There is also the empty string, containing no characters at all.

Trong trường hợp danh sách hoặc bộ dữ liệu, chúng được tạo thành từ các phần tử, là giá trị của bất kỳ kiểu dữ liệu Python nào, bao gồm các danh sách và bộ dữ liệu khác.elements, which are values of any Python datatype, including other lists and tuples.

Danh sách được đặt trong ngoặc vuông (

>>> last = seq[len(seq) - 1]
0 và
>>> last = seq[len(seq) - 1]
1) và các bộ dữ liệu trong ngoặc đơn (
>>> last = seq[len(seq) - 1]
2 và
>>> last = seq[len(seq) - 1]
3).
are enclosed in square brackets (
>>> last = seq[len(seq) - 1]
0 and
>>> last = seq[len(seq) - 1]
1) and tuples in parentheses (
>>> last = seq[len(seq) - 1]
2 and
>>> last = seq[len(seq) - 1]
3).

Một danh sách không chứa các phần tử được gọi là một danh sách trống và một tuple không có phần tử là một tuple trống.

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]

Ví dụ đầu tiên là danh sách năm số nguyên, và tiếp theo là danh sách ba chuỗi. Thứ ba là một tuple chứa bốn số nguyên, sau đó là một tuple chứa bốn chuỗi. Cuối cùng là một danh sách chứa ba bộ dữ liệu, mỗi bộ chứa một cặp chuỗi.

Tùy thuộc vào những gì chúng tôi đang làm, chúng tôi có thể muốn coi một loại dữ liệu hỗn hợp là một điều duy nhất hoặc chúng tôi có thể muốn truy cập các phần của nó. Sự mơ hồ này là hữu ích.

Ghi chú

Có thể bỏ dấu ngoặc đơn khi chỉ định một tuple và chỉ sử dụng danh sách các giá trị bị phân tách bằng dấu phẩy:

>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)

Ngoài ra, bắt buộc phải bao gồm một dấu phẩy khi chỉ định một tuple chỉ có một yếu tố:

>>> singleton = (2,)
>>> type(singleton)

>>> not_tuple = (2)
>>> type(not_tuple)

>>> empty_tuple = ()
>>> type(empty_tuple)

Ngoại trừ trường hợp của tuple trống, nó thực sự là dấu phẩy, không phải dấu ngoặc đơn, nói với Python rằng đó là một tuple.

3.2. Làm việc với các phần của chuỗiWorking with the parts of a sequence¶

Các loại trình tự chia sẻ một tập hợp các hoạt động chung.

3.2.1. Lập chỉ mụcIndexing¶

Toán tử lập chỉ mục (

>>> last = seq[len(seq) - 1]
0
>>> last = seq[len(seq) - 1]
1) chọn một phần tử duy nhất từ ​​một chuỗi. Biểu thức bên trong ngoặc được gọi là chỉ mục và phải là một giá trị số nguyên. Chỉ mục chỉ ra phần tử nào để chọn, do đó tên của nó.indexing operator (
>>> last = seq[len(seq) - 1]
0
>>> last = seq[len(seq) - 1]
1) selects a single element from a sequence. The expression inside brackets is called the index, and must be an integer value. The index indicates which element to select, hence its name.

>>> fruit = "banana"
>>> fruit[1]
'a'
>>> fruits = ['apples', 'cherries', 'pears']
>>> fruits[0]
'apples'
>>> prices = (3.99, 6.00, 10.00, 5.25)
>>> prices[3]
5.25
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> pairs[2]
('school', 'escuela')

Biểu thức

>>> last = seq[len(seq) - 1]
6 chọn ký tự với INDEX
>>> last = seq[len(seq) - 1]
7 từ
>>> last = seq[len(seq) - 1]
8 và tạo ra một chuỗi mới chỉ chứa một ký tự này, bạn có thể ngạc nhiên khi thấy là
>>> last = seq[len(seq) - 1]
9.

Bạn có thể dự kiến ​​sẽ thấy

>>> prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
>>> prime_nums[-2]
29
>>> classmates = ("Alejandro", "Ed", "Kathryn", "Presila", "Sean", "Peter")
>>> classmates[-5]
'Ed'
>>> word = "Alphabet"
>>> word[-3]
'b'
0, nhưng các nhà khoa học máy tính thường bắt đầu đếm từ số không, không phải một. Hãy nghĩ về chỉ số là các số trên một thước đo đo lường số lượng yếu tố bạn đã chuyển sang chuỗi từ đầu. Cả người cai trị và chỉ số bắt đầu tại
>>> prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
>>> prime_nums[-2]
29
>>> classmates = ("Alejandro", "Ed", "Kathryn", "Presila", "Sean", "Peter")
>>> classmates[-5]
'Ed'
>>> word = "Alphabet"
>>> word[-3]
'b'
1.

3.2.2. Chiều dài¶Length¶

Chương trước bạn đã thấy hàm

>>> prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
>>> prime_nums[-2]
29
>>> classmates = ("Alejandro", "Ed", "Kathryn", "Presila", "Sean", "Peter")
>>> classmates[-5]
'Ed'
>>> word = "Alphabet"
>>> word[-3]
'b'
2 được sử dụng để lấy số lượng ký tự trong một chuỗi:

Với danh sách và bộ dữ liệu,

>>> prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
>>> prime_nums[-2]
29
>>> classmates = ("Alejandro", "Ed", "Kathryn", "Presila", "Sean", "Peter")
>>> classmates[-5]
'Ed'
>>> word = "Alphabet"
>>> word[-3]
'b'
2 trả về số lượng phần tử trong chuỗi:

>>> len(['a', 'b', 'c', 'd'])
4
>>> len((2, 4, 6, 8, 10, 12))
6
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> len(pairs)
3

3.2.3. Truy cập các yếu tố ở cuối chuỗiAccessing elements at the end of a sequence¶

Người ta thường thấy trong chương trình máy tính cần truy cập các yếu tố ở cuối chuỗi. Bây giờ bạn đã thấy chức năng

>>> prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
>>> prime_nums[-2]
29
>>> classmates = ("Alejandro", "Ed", "Kathryn", "Presila", "Sean", "Peter")
>>> classmates[-5]
'Ed'
>>> word = "Alphabet"
>>> word[-3]
'b'
2, bạn có thể muốn thử một cái gì đó như thế này:

>>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0]
>>> last = seq[len(seq)]       # ERROR!

Điều đó đã giành được công việc. Nó gây ra lỗi thời gian chạy

>>> prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
>>> prime_nums[-2]
29
>>> classmates = ("Alejandro", "Ed", "Kathryn", "Presila", "Sean", "Peter")
>>> classmates[-5]
'Ed'
>>> word = "Alphabet"
>>> word[-3]
'b'
5. Lý do là
>>> prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
>>> prime_nums[-2]
29
>>> classmates = ("Alejandro", "Ed", "Kathryn", "Presila", "Sean", "Peter")
>>> classmates[-5]
'Ed'
>>> word = "Alphabet"
>>> word[-3]
'b'
6 trả về số lượng các phần tử trong danh sách, 16, nhưng không có phần tử nào ở vị trí chỉ mục 16 trong
>>> prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
>>> prime_nums[-2]
29
>>> classmates = ("Alejandro", "Ed", "Kathryn", "Presila", "Sean", "Peter")
>>> classmates[-5]
'Ed'
>>> word = "Alphabet"
>>> word[-3]
'b'
7.

Vì chúng tôi bắt đầu đếm ở 0, mười sáu chỉ số được đánh số từ 0 đến 15. Để có được phần tử cuối cùng, chúng tôi phải trừ 1 từ độ dài:

>>> last = seq[len(seq) - 1]

Đây là một mô hình phổ biến như vậy mà Python cung cấp một ký hiệu tay ngắn cho nó, lập chỉ mục âm, đếm ngược từ cuối chuỗi.negative indexing, which counts backward from the end of the sequence.

Biểu thức

>>> prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
>>> prime_nums[-2]
29
>>> classmates = ("Alejandro", "Ed", "Kathryn", "Presila", "Sean", "Peter")
>>> classmates[-5]
'Ed'
>>> word = "Alphabet"
>>> word[-3]
'b'
8 mang lại phần tử cuối cùng,
>>> prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
>>> prime_nums[-2]
29
>>> classmates = ("Alejandro", "Ed", "Kathryn", "Presila", "Sean", "Peter")
>>> classmates[-5]
'Ed'
>>> word = "Alphabet"
>>> word[-3]
'b'
9 mang lại thứ hai đến cuối cùng, v.v.

>>> prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
>>> prime_nums[-2]
29
>>> classmates = ("Alejandro", "Ed", "Kathryn", "Presila", "Sean", "Peter")
>>> classmates[-5]
'Ed'
>>> word = "Alphabet"
>>> word[-3]
'b'

3.2.4. Traversal và prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31] for num in prime_nums: print(num ** 2) 0 Loop¶Traversal and the prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31] for num in prime_nums: print(num ** 2) 0 loop¶

Rất nhiều tính toán liên quan đến việc xử lý một chuỗi một yếu tố tại một thời điểm. Mẫu phổ biến nhất là bắt đầu ở đầu, lần lượt chọn từng phần tử, làm điều gì đó với nó và tiếp tục cho đến khi kết thúc. Mô hình xử lý này được gọi là một đường truyền.traversal.

Vòng lặp Python từ ____990 giúp Traversal dễ dàng thể hiện:

prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]

for num in prime_nums:
    print(num ** 2)

Ghi chú

Chúng tôi sẽ thảo luận về việc lặp lại chi tiết hơn trong chương tiếp theo. Bây giờ, chỉ cần lưu ý rằng dấu hai chấm (:) ở cuối dòng đầu tiên và thụt vào dòng thứ hai đều được yêu cầu để câu lệnh này được chính xác về mặt cú pháp.

3.3. ________ 92¶prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31] for num in prime_nums: print(num ** 2) 2¶

Khi vòng lặp

prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]

for num in prime_nums:
    print(num ** 2)
0 tiêu chuẩn đi qua một chuỗi, nó chỉ định từng giá trị theo trình tự cho biến vòng lặp theo thứ tự nó xảy ra trong chuỗi. Đôi khi nó hữu ích để có cả giá trị và chỉ số của từng phần tử. Hàm
prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]

for num in prime_nums:
    print(num ** 2)
2 cung cấp cho chúng ta điều này:

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
0

3.3.1. Lát cắtSlices¶

Một phần sau của một chuỗi được gọi là một lát cắt và hoạt động trích xuất một phần sau được gọi là cắt. Giống như với việc lập chỉ mục, chúng tôi sử dụng dấu ngoặc vuông (

>>> last = seq[len(seq) - 1]
0
>>> last = seq[len(seq) - 1]
1) làm toán tử lát cắt, nhưng thay vì một giá trị số nguyên bên trong, chúng tôi có hai, được phân tách bởi một dấu hai chấm (
prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]

for num in prime_nums:
    print(num ** 2)
7):slice and the operation that extracts a subsequence is called slicing. Like with indexing, we use square brackets (
>>> last = seq[len(seq) - 1]
0
>>> last = seq[len(seq) - 1]
1) as the slice operator, but instead of one integer value inside we have two, seperated by a colon (
prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]

for num in prime_nums:
    print(num ** 2)
7):

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
1

Nhà điều hành

prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]

for num in prime_nums:
    print(num ** 2)
8 trả về một phần của chuỗi từ phần tử N hèth cho phần tử M hèth, bao gồm cả phần đầu tiên nhưng không bao gồm phần cuối cùng. Hành vi này là phản trực giác; Sẽ có ý nghĩa hơn nếu bạn tưởng tượng các chỉ số chỉ giữa các ký tự, như trong sơ đồ sau:

Hướng dẫn difference between string and tuple in python - sự khác biệt giữa chuỗi và tuple trong python

Nếu bạn bỏ qua chỉ mục đầu tiên (trước dấu hai chấm), lát cắt bắt đầu ở đầu chuỗi. Nếu bạn bỏ qua chỉ mục thứ hai, lát cắt đi đến cuối chuỗi. Do đó:

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
2

Bạn nghĩ

prime_nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]

for num in prime_nums:
    print(num ** 2)
9 có nghĩa là gì? Còn
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
00 thì sao?

Các chỉ số tiêu cực cũng được cho phép, vì vậy

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
3

Mẹo

Phát triển sự hiểu biết vững chắc về cách cắt lát hoạt động là quan trọng. Tiếp tục tạo các thử nghiệm trên mạng của riêng bạn với các chuỗi và lát cắt cho đến khi bạn có thể liên tục dự đoán kết quả của một hoạt động cắt trước khi bạn chạy nó.

Khi bạn cắt một chuỗi, chuỗi kết quả luôn có cùng loại với trình tự mà nó được bắt nguồn. Điều này nói chung không đúng với việc lập chỉ mục, ngoại trừ trong trường hợp chuỗi.

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
4

Mặc dù các yếu tố của một danh sách (hoặc tuple) có thể thuộc bất kỳ loại nào, bất kể bạn cắt nó như thế nào, một lát của danh sách là một danh sách.

3.3.2. Nhà điều hành [10, 20, 30, 40, 50] ["spam", "bungee", "swallow"] (2, 4, 6, 8) ("two", "four", "six", "eight") [("cheese", "queso"), ("red", "rojo"), ("school", "escuela")] 01The [10, 20, 30, 40, 50] ["spam", "bungee", "swallow"] (2, 4, 6, 8) ("two", "four", "six", "eight") [("cheese", "queso"), ("red", "rojo"), ("school", "escuela")] 01 operator¶

Toán tử

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
01 trả về xem một phần tử nhất định có chứa trong danh sách hoặc tuple:

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
5

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
01 hoạt động hơi khác với chuỗi. Nó đánh giá là
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
04 nếu một chuỗi là một chuỗi con của một chuỗi khác:

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
6

Lưu ý rằng một chuỗi là một chuỗi con của chính nó và chuỗi trống là một chuỗi con của bất kỳ chuỗi nào khác. (Cũng lưu ý rằng các lập trình viên máy tính thích nghĩ về các trường hợp cạnh này khá cẩn thận!)

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
7

3.4. Đối tượng và Phương phápObjects and methods¶

Chuỗi, danh sách và bộ dữ liệu là đối tượng, điều đó có nghĩa là chúng không chỉ giữ các giá trị, mà còn có các hành vi tích hợp được gọi là phương thức, hoạt động trên các giá trị trong đối tượng.

Hãy cùng xem xét một số phương thức chuỗi trong hành động để xem cách thức hoạt động của nó.

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
8

Bây giờ, hãy để học cách mô tả những gì chúng ta vừa thấy. Mỗi chuỗi trong các ví dụ trên được theo sau bởi một toán tử chấm, tên phương thức và danh sách tham số, có thể trống.dot operator, a method name, and a parameter list, which may be empty.

Trong ví dụ đầu tiên, chuỗi

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
05 được theo sau bởi toán tử DOT và sau đó là phương thức
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
06, có danh sách tham số trống. Chúng tôi nói rằng phương thức ____ ____106 được gọi trên chuỗi,
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
05. Gọi phương thức gây ra một hành động diễn ra bằng cách sử dụng giá trị mà phương thức được gọi. Hành động tạo ra kết quả, trong trường hợp này là giá trị chuỗi
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
09. Chúng tôi nói rằng phương thức
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
06 trả về chuỗi
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
09 khi nó được gọi trên (hoặc gọi) chuỗi
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
05.invoked on the string,
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
05. Invoking the method causes an action to take place using the value on which the method is invoked. The action produces a result, in this case the string value
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
09. We say that the
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
06 method returns the string
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
09 when it is invoked on (or called on) the string
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
05.

Trong ví dụ thứ tư, phương thức

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
13 (một lần nữa với danh sách tham số trống) được gọi trên chuỗi
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
14. Vì mỗi ký tự trong chuỗi đại diện cho một chữ số, phương thức
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
13 trả về giá trị boolean
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
04. Gọi
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
13 trên
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
18 sản xuất
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
19.

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
20 loại bỏ khoảng trắng dẫn đầu và dấu vết.

3.5. Hàm [10, 20, 30, 40, 50] ["spam", "bungee", "swallow"] (2, 4, 6, 8) ("two", "four", "six", "eight") [("cheese", "queso"), ("red", "rojo"), ("school", "escuela")] 21 và DocStrings¶The [10, 20, 30, 40, 50] ["spam", "bungee", "swallow"] (2, 4, 6, 8) ("two", "four", "six", "eight") [("cheese", "queso"), ("red", "rojo"), ("school", "escuela")] 21 function and docstrings¶

Phần trước đã giới thiệu một số phương thức của các đối tượng chuỗi. Để tìm tất cả các phương pháp mà các chuỗi có, chúng ta có thể sử dụng chức năng

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
22 tích hợp của Python:

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
9

Chúng tôi sẽ hoãn việc nói về những người bắt đầu bằng cách nhấn mạnh gấp đôi (

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
23) cho đến sau này. Bạn có thể tìm hiểu thêm về từng phương pháp này bằng cách in ra các tài liệu của họ. Để tìm hiểu phương pháp
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
24 làm gì, ví dụ, chúng tôi làm điều này:

>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
0

Sử dụng thông tin này, chúng tôi có thể thử sử dụng phương thức thay thế để biến đổi mà chúng tôi biết nó hoạt động như thế nào.

>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
1

Ví dụ đầu tiên thay thế tất cả các tình trạng của

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
25 bằng
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
26. Thứ hai thay thế ký tự đơn
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
27 bằng hai ký tự
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
28. Ví dụ thứ ba thay thế hai lần xuất hiện đầu tiên của
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
29 bằng chuỗi trống.

3.6. [10, 20, 30, 40, 50] ["spam", "bungee", "swallow"] (2, 4, 6, 8) ("two", "four", "six", "eight") [("cheese", "queso"), ("red", "rojo"), ("school", "escuela")] 30 và [10, 20, 30, 40, 50] ["spam", "bungee", "swallow"] (2, 4, 6, 8) ("two", "four", "six", "eight") [("cheese", "queso"), ("red", "rojo"), ("school", "escuela")] 31 Phương pháp Jor[10, 20, 30, 40, 50] ["spam", "bungee", "swallow"] (2, 4, 6, 8) ("two", "four", "six", "eight") [("cheese", "queso"), ("red", "rojo"), ("school", "escuela")] 30 and [10, 20, 30, 40, 50] ["spam", "bungee", "swallow"] (2, 4, 6, 8) ("two", "four", "six", "eight") [("cheese", "queso"), ("red", "rojo"), ("school", "escuela")] 31 methods¶

Có hai phương pháp phổ biến cho cả ba loại chuỗi:

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
30 và
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
31. Hãy cùng nhìn vào các tài liệu của họ để xem những gì họ làm.

>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
2

Chúng tôi sẽ khám phá các chức năng này trong các bài tập.

3.7. Danh sách là có thể thay đổiLists are mutable¶

Không giống như các chuỗi và bộ dữ liệu, là các đối tượng bất biến, danh sách có thể thay đổi, điều đó có nghĩa là chúng ta có thể thay đổi các yếu tố của chúng. Sử dụng toán tử khung ở phía bên trái của bài tập, chúng tôi có thể cập nhật một trong các yếu tố:mutable, which means we can change their elements. Using the bracket operator on the left side of an assignment, we can update one of the elements:

>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
3

Toán tử khung được áp dụng cho một danh sách có thể xuất hiện ở bất cứ đâu trong một biểu thức. Khi nó xuất hiện ở phía bên trái của một bài tập, nó thay đổi một trong các yếu tố trong danh sách, do đó, phần tử đầu tiên của

>>> last = seq[len(seq) - 1]
8 đã được thay đổi từ
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
35 thành
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
36 và phần cuối cùng từ
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
37 thành
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
38. Một nhiệm vụ cho một yếu tố của một danh sách được gọi là gán mục. Bài tập vật phẩm không hoạt động cho các chuỗi:item assignment. Item assignment does not work for strings:

>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
4

Nhưng nó làm cho danh sách:

>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
5

Với toán tử lát cắt, chúng tôi có thể cập nhật một số yếu tố cùng một lúc:

>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
6

Chúng tôi cũng có thể xóa các phần tử khỏi danh sách bằng cách gán danh sách trống cho họ:

>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
7

Và chúng ta có thể thêm các phần tử vào danh sách bằng cách ép chúng vào một lát trống tại vị trí mong muốn:

>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
8

3.8. Danh sách xóaList deletion¶

Sử dụng các lát để xóa các yếu tố danh sách có thể khó xử, và do đó dễ bị lỗi. Python cung cấp một giải pháp thay thế dễ đọc hơn.

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
39 Xóa một phần tử khỏi danh sách:

>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
9

Như bạn có thể mong đợi,

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
39 xử lý các chỉ số âm và gây ra lỗi thời gian chạy nếu chỉ mục nằm ngoài phạm vi.

Bạn có thể sử dụng một lát làm chỉ mục cho

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
39:

>>> singleton = (2,)
>>> type(singleton)

>>> not_tuple = (2)
>>> type(not_tuple)

>>> empty_tuple = ()
>>> type(empty_tuple)

0

Như thường lệ, các lát cắt chọn tất cả các yếu tố lên đến, nhưng không bao gồm chỉ số thứ hai.

3.9. Phương pháp liệt kêList methods¶

Ngoài

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
30 và
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
31, danh sách có một số phương pháp hữu ích. Vì các danh sách có thể thay đổi, các phương thức này sửa đổi danh sách mà chúng được gọi, thay vì trả lại một danh sách mới.

>>> singleton = (2,)
>>> type(singleton)

>>> not_tuple = (2)
>>> type(not_tuple)

>>> empty_tuple = ()
>>> type(empty_tuple)

1

Phương pháp

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
44 đặc biệt hữu ích, vì nó giúp dễ dàng sử dụng Python để sắp xếp dữ liệu mà bạn đã đưa vào danh sách.

3.10. Tên và các giá trị có thể thay đổiNames and mutable values¶

Nếu chúng tôi thực hiện các câu lệnh gán này,

>>> singleton = (2,)
>>> type(singleton)

>>> not_tuple = (2)
>>> type(not_tuple)

>>> empty_tuple = ()
>>> type(empty_tuple)

2

Chúng tôi biết rằng các tên

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
45 và
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
46 sẽ đề cập đến một danh sách với các số
>>> last = seq[len(seq) - 1]
7,
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
48 và
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
49. Nhưng chúng tôi không biết liệu họ có chỉ vào cùng một danh sách hay không.

Có hai trạng thái có thể:

Hướng dẫn difference between string and tuple in python - sự khác biệt giữa chuỗi và tuple trong python

hoặc

Hướng dẫn difference between string and tuple in python - sự khác biệt giữa chuỗi và tuple trong python

Trong một trường hợp,

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
45 và
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
46 đề cập đến hai điều khác nhau có cùng giá trị. Trong trường hợp thứ hai, họ đề cập đến cùng một đối tượng.

Chúng ta có thể kiểm tra xem hai tên có cùng giá trị bằng cách sử dụng

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
52:

Chúng ta có thể kiểm tra xem hai tên có đề cập đến cùng một đối tượng bằng toán tử IS hay không:

Điều này cho chúng ta biết rằng cả

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
45 và
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
46 không đề cập đến cùng một đối tượng và đó là sơ đồ đầu tiên trong hai sơ đồ trạng thái mô tả mối quan hệ.

3.11. Răng cưa¶Aliasing¶

Vì các biến đề cập đến các đối tượng, nếu chúng ta gán một biến cho một biến khác, cả hai biến tham chiếu đến cùng một đối tượng:

>>> singleton = (2,)
>>> type(singleton)

>>> not_tuple = (2)
>>> type(not_tuple)

>>> empty_tuple = ()
>>> type(empty_tuple)

3

Trong trường hợp này, đây là thứ hai trong hai sơ đồ trạng thái mô tả mối quan hệ giữa các biến.

Bởi vì cùng một danh sách có hai tên khác nhau,

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
45 và
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
46, chúng tôi nói rằng nó là bí danh. Vì danh sách là có thể thay đổi, các thay đổi được thực hiện với một bí danh ảnh hưởng đến cái kia:aliased. Since lists are mutable, changes made with one alias affect the other:

>>> singleton = (2,)
>>> type(singleton)

>>> not_tuple = (2)
>>> type(not_tuple)

>>> empty_tuple = ()
>>> type(empty_tuple)

4

Mặc dù hành vi này có thể hữu ích, đôi khi nó bất ngờ hoặc không mong muốn. Nói chung, sẽ an toàn hơn khi tránh răng cưa khi bạn đang làm việc với các đối tượng có thể thay đổi. Tất nhiên, đối với các đối tượng bất biến, không có vấn đề gì, vì chúng có thể thay đổi sau khi chúng được tạo ra.

3.12. Danh sách nhân bảnCloning lists¶

Nếu chúng tôi muốn sửa đổi một danh sách và cũng giữ một bản sao của bản gốc, chúng tôi cần có thể tạo một bản sao của danh sách, không chỉ là tài liệu tham khảo. Quá trình này đôi khi được gọi là nhân bản, để tránh sự mơ hồ của bản sao từ.cloning, to avoid the ambiguity of the word copy.

Cách dễ nhất để sao chép danh sách là sử dụng toán tử lát cắt:

>>> singleton = (2,)
>>> type(singleton)

>>> not_tuple = (2)
>>> type(not_tuple)

>>> empty_tuple = ()
>>> type(empty_tuple)

5

Lấy bất kỳ lát cắt

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
45 tạo ra một danh sách mới. Trong trường hợp này, lát cắt xảy ra bao gồm toàn bộ danh sách.

Bây giờ chúng tôi có thể tự do thay đổi

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
46 mà không phải lo lắng về
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
45:

>>> singleton = (2,)
>>> type(singleton)

>>> not_tuple = (2)
>>> type(not_tuple)

>>> empty_tuple = ()
>>> type(empty_tuple)

6

3.13. Danh sách lồng nhauNested lists¶

Danh sách lồng nhau là một danh sách xuất hiện dưới dạng một yếu tố trong một danh sách khác. Trong danh sách này, phần tử có chỉ mục 3 là một danh sách lồng nhau:

>>> singleton = (2,)
>>> type(singleton)

>>> not_tuple = (2)
>>> type(not_tuple)

>>> empty_tuple = ()
>>> type(empty_tuple)

7

Nếu chúng ta in

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
60, chúng ta sẽ nhận được
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
61. Để trích xuất một phần tử từ danh sách lồng nhau, chúng ta có thể tiến hành hai bước:

>>> singleton = (2,)
>>> type(singleton)

>>> not_tuple = (2)
>>> type(not_tuple)

>>> empty_tuple = ()
>>> type(empty_tuple)

8

Hoặc chúng ta có thể kết hợp chúng:

Các toán tử khung đánh giá từ trái sang phải, do đó, biểu thức này có phần tử ba eth của

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
62 và trích xuất phần tử một eth từ nó.

3.14. Chuỗi và danh sáchStrings and lists¶

Python có một số công cụ kết hợp danh sách các chuỗi thành các chuỗi và các chuỗi riêng biệt thành danh sách các chuỗi.

Lệnh

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
63 lấy loại trình tự làm đối số và tạo một danh sách trong số các yếu tố của nó. Khi được áp dụng cho một chuỗi, bạn nhận được một danh sách các ký tự.

>>> singleton = (2,)
>>> type(singleton)

>>> not_tuple = (2)
>>> type(not_tuple)

>>> empty_tuple = ()
>>> type(empty_tuple)

9

Phương thức

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
64 được gọi trên một chuỗi và tách chuỗi thành một danh sách các chuỗi, phá vỡ nó bất cứ khi nào một chuỗi con được gọi là dấu phân cách xảy ra. Phân đoạn mặc định là khoảng trắng, bao gồm không gian, tab và newlines.

>>> fruit = "banana"
>>> fruit[1]
'a'
>>> fruits = ['apples', 'cherries', 'pears']
>>> fruits[0]
'apples'
>>> prices = (3.99, 6.00, 10.00, 5.25)
>>> prices[3]
5.25
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> pairs[2]
('school', 'escuela')
0

Ở đây chúng tôi có

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
65 là dấu phân cách.

>>> fruit = "banana"
>>> fruit[1]
'a'
>>> fruits = ['apples', 'cherries', 'pears']
>>> fruits[0]
'apples'
>>> prices = (3.99, 6.00, 10.00, 5.25)
>>> prices[3]
5.25
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> pairs[2]
('school', 'escuela')
1

Lưu ý rằng dấu phân cách không xuất hiện trong danh sách.

Phương pháp

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
66 thực hiện xấp xỉ oposite của phương pháp
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
64. Nó lấy một danh sách các chuỗi làm đối số và trả về một chuỗi của tất cả các yếu tố danh sách được kết hợp với nhau.

>>> fruit = "banana"
>>> fruit[1]
'a'
>>> fruits = ['apples', 'cherries', 'pears']
>>> fruits[0]
'apples'
>>> prices = (3.99, 6.00, 10.00, 5.25)
>>> prices[3]
5.25
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> pairs[2]
('school', 'escuela')
2

Giá trị chuỗi mà phương thức

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
66 được gọi hoạt động như một dấu phân cách được đặt giữa mỗi phần tử trong danh sách trong chuỗi được trả về.

>>> fruit = "banana"
>>> fruit[1]
'a'
>>> fruits = ['apples', 'cherries', 'pears']
>>> fruits[0]
'apples'
>>> prices = (3.99, 6.00, 10.00, 5.25)
>>> prices[3]
5.25
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> pairs[2]
('school', 'escuela')
3

Dấu tách cũng có thể là chuỗi trống.

>>> fruit = "banana"
>>> fruit[1]
'a'
>>> fruits = ['apples', 'cherries', 'pears']
>>> fruits[0]
'apples'
>>> prices = (3.99, 6.00, 10.00, 5.25)
>>> prices[3]
5.25
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> pairs[2]
('school', 'escuela')
4

3.15. Tuple Ghépter¶Tuple assignment¶

Thỉnh thoảng, rất hữu ích khi trao đổi các giá trị của hai biến. Với các câu lệnh gán thông thường, chúng tôi phải sử dụng một biến tạm thời. Ví dụ, để hoán đổi

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
45 và
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
46:

Nếu chúng ta phải làm điều này thường xuyên, cách tiếp cận này trở nên cồng kềnh. Python cung cấp một hình thức chuyển nhượng tuple giải quyết vấn đề này một cách gọn gàng:tuple assignment that solves this problem neatly:

Phía bên trái là một bộ biến của các biến; Phía bên phải là một tuple của các giá trị. Mỗi giá trị được gán cho biến tương ứng của nó. Tất cả các biểu thức ở phía bên phải được đánh giá trước bất kỳ bài tập nào. Tính năng này làm cho việc gán tuple khá linh hoạt.

Đương nhiên, số lượng biến ở bên trái và số lượng giá trị bên phải phải giống nhau:

>>> fruit = "banana"
>>> fruit[1]
'a'
>>> fruits = ['apples', 'cherries', 'pears']
>>> fruits[0]
'apples'
>>> prices = (3.99, 6.00, 10.00, 5.25)
>>> prices[3]
5.25
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> pairs[2]
('school', 'escuela')
5

3.16. Giá trị BooleanBoolean values¶

Bây giờ chúng ta sẽ xem xét một loại giá trị mới - giá trị Boolean - được đặt theo tên của nhà toán học người Anh, George Boole. Ông đã tạo ra toán học mà chúng ta gọi là Đại số Boolean, là cơ sở của tất cả các số học máy tính hiện đại.

Ghi chú

Đó là một khả năng của máy tính để thay đổi luồng thực thi của nó tùy thuộc vào việc giá trị boolean là đúng hay sai, tạo ra một máy tính mục đích chung không chỉ là một máy tính.

Chỉ có hai giá trị Boolean,

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
04 và
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
19.

>>> fruit = "banana"
>>> fruit[1]
'a'
>>> fruits = ['apples', 'cherries', 'pears']
>>> fruits[0]
'apples'
>>> prices = (3.99, 6.00, 10.00, 5.25)
>>> prices[3]
5.25
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> pairs[2]
('school', 'escuela')
6

Viết hoa là quan trọng, vì

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
73 và
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
74 không phải là giá trị boolean trong Python .:

>>> fruit = "banana"
>>> fruit[1]
'a'
>>> fruits = ['apples', 'cherries', 'pears']
>>> fruits[0]
'apples'
>>> prices = (3.99, 6.00, 10.00, 5.25)
>>> prices[3]
5.25
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> pairs[2]
('school', 'escuela')
7

3.17. Boolean Biểu cảmBoolean expressions¶

Một biểu thức boolean là một biểu thức đánh giá giá trị boolean.boolean expression is an expression that evaluates to a boolean value.

Toán tử

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
52 so sánh hai giá trị và tạo ra giá trị boolean:

>>> fruit = "banana"
>>> fruit[1]
'a'
>>> fruits = ['apples', 'cherries', 'pears']
>>> fruits[0]
'apples'
>>> prices = (3.99, 6.00, 10.00, 5.25)
>>> prices[3]
5.25
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> pairs[2]
('school', 'escuela')
8

Trong câu lệnh đầu tiên, hai toán hạng là bằng nhau, do đó biểu thức đánh giá thành

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
04; Trong tuyên bố thứ hai, 5 không bằng 6, vì vậy chúng tôi nhận được
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
19.

Toán tử

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
52 là một trong sáu toán tử so sánh phổ biến; Những người khác là:comparison operators; the others are:

>>> fruit = "banana"
>>> fruit[1]
'a'
>>> fruits = ['apples', 'cherries', 'pears']
>>> fruits[0]
'apples'
>>> prices = (3.99, 6.00, 10.00, 5.25)
>>> prices[3]
5.25
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> pairs[2]
('school', 'escuela')
9

Mặc dù các hoạt động này có thể quen thuộc với bạn, các biểu tượng Python khác với các biểu tượng toán học. Một lỗi phổ biến là sử dụng một dấu hiệu bằng nhau (

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
79) thay vì dấu hiệu gấp đôi (
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
52). Hãy nhớ rằng
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
79 là một toán tử gán và
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
52 là một toán tử so sánh. Ngoài ra, không có thứ gọi là
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
83 hoặc
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
84.

3.18. Người vận hành logicLogical operators¶

Có ba toán tử logic:

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
85,
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
86 và
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
87. Các ngữ nghĩa (có nghĩa) của các toán tử này tương tự như ý nghĩa của chúng trong tiếng Anh. Ví dụ,
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
88 chỉ đúng nếu
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
89 lớn hơn 0 và đồng thời, x nhỏ hơn 10.logical operators:
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
85,
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
86, and
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
87. The semantics (meaning) of these operators is similar to their meaning in English. For example,
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
88 is true only if
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
89 is greater than 0 and at the same time, x is less than 10.

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
90 là đúng nếu một trong hai điều kiện là đúng, nghĩa là, nếu số này chia hết cho 2 hoặc chia hết cho 3.

Cuối cùng, toán tử

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
87 phủ nhận biểu thức boolean, do đó
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
92 là đúng nếu
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
93 là sai, nghĩa là, nếu
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
89 nhỏ hơn hoặc bằng
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
95.

>>> len(['a', 'b', 'c', 'd'])
4
>>> len((2, 4, 6, 8, 10, 12))
6
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> len(pairs)
3
0

3.19. Đánh giá ngắn mạchShort-circuit evaluation¶

Các biểu thức boolean trong Python sử dụng đánh giá ngắn mạch, có nghĩa là chỉ đối số đầu tiên của biểu thức

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
85 hoặc
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
86 được đánh giá khi giá trị của nó là hợp lý để xác định giá trị của toàn bộ biểu thức.short-circuit evaluation, which means only the first argument of an
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
85 or
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
86 expression is evaluated when its value is suffient to determine the value of the entire expression.

Điều này có thể khá hữu ích trong việc ngăn ngừa lỗi thời gian chạy. Hãy tưởng tượng bạn muốn kiểm tra xem số thứ năm trong một bộ số nguyên có tên

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
98 có được không.

Biểu thức sau đây sẽ hoạt động:

>>> len(['a', 'b', 'c', 'd'])
4
>>> len((2, 4, 6, 8, 10, 12))
6
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> len(pairs)
3
1

Tất nhiên trừ khi không có 5 yếu tố trong

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
98, trong trường hợp đó bạn sẽ nhận được:

>>> len(['a', 'b', 'c', 'd'])
4
>>> len((2, 4, 6, 8, 10, 12))
6
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> len(pairs)
3
2

Đánh giá ngắn mạch làm cho nó có thể tránh được vấn đề này.

>>> len(['a', 'b', 'c', 'd'])
4
>>> len((2, 4, 6, 8, 10, 12))
6
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> len(pairs)
3
3

Vì phía bên trái của biểu thức

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
85 này là sai, Python không cần phải đánh giá phía bên phải để xác định rằng toàn bộ biểu thức là sai. Vì nó sử dụng đánh giá ngắn mạch, nó không và tránh lỗi thời gian chạy.

3.20. "Sự thật"“Truthiness”¶

Tất cả các giá trị Python đều có một sự thật của người Viking, hay giả mạo, điều đó có nghĩa là chúng có thể được sử dụng ở những nơi yêu cầu Boolean. Đối với các loại số và trình tự mà chúng ta đã thấy cho đến nay, sự thật được định nghĩa như sau:

Các loại số

Các giá trị bằng 0 là sai, tất cả các giá trị khác là đúng.

Các loại trình tự

Trình tự trống là sai, các chuỗi không trống là đúng.

Kết hợp khái niệm về sự thật này với sự hiểu biết về đánh giá ngắn mạch cho phép có thể hiểu được Python đang làm gì trong các biểu thức sau:

>>> len(['a', 'b', 'c', 'd'])
4
>>> len((2, 4, 6, 8, 10, 12))
6
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> len(pairs)
3
4

3.21. Bảng chú giải¶Glossary¶

bí danh

Nhiều biến có chứa tham chiếu đến cùng một đối tượng.

giá trị boolean

Có chính xác hai giá trị boolean:

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
04 và
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
19. Các giá trị Boolean kết quả khi biểu thức boolean được đánh giá bởi python interepreter. Họ có loại
>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
03.

Biểu hiện boolean

Một biểu thức là đúng hoặc sai.

dòng vô tính

Để tạo một đối tượng mới có cùng giá trị như một đối tượng hiện có. Sao chép một tham chiếu đến một đối tượng tạo ra một bí danh nhưng không sao chép đối tượng.

Nhà điều hành so sánh

Một trong những toán tử so sánh hai giá trị:

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
52,
>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
05,
>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
06,
>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
07,
>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
08 và
>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
09.

Kiểu dữ liệu hỗn hợp

Một loại dữ liệu trong đó các giá trị được tạo thành từ các thành phần hoặc phần tử, đó là các giá trị của chúng.

yếu tố

Một trong những phần tạo nên loại trình tự (chuỗi, danh sách hoặc tuple). Các yếu tố có một giá trị và một chỉ mục. Giá trị được truy cập bằng cách sử dụng toán tử chỉ mục (

>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
10) trên chuỗi.

Kiểu dữ liệu bất biến

Một kiểu dữ liệu không thể sửa đổi. Bài tập cho các phần tử hoặc lát cắt các loại bất biến gây ra lỗi thời gian chạy.

mục lục

Một biến hoặc giá trị được sử dụng để chọn một thành viên của bộ sưu tập được đặt hàng, chẳng hạn như ký tự từ chuỗi hoặc phần tử từ danh sách hoặc tuple.

toán tử logic

Một trong những toán tử kết hợp các biểu thức boolean:

[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
85,
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
86 và
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"), ("school", "escuela")]
87.

Loại dữ liệu có thể thay đổi

Một kiểu dữ liệu có thể được sửa đổi. Tất cả các loại có thể thay đổi là các loại hợp chất. Danh sách và từ điển là các loại dữ liệu có thể thay đổi; Chuỗi và bộ dữ liệu không.

danh sách lồng nhau

Một danh sách là một yếu tố của một danh sách khác.

lát cắt

Một phần của chuỗi (chuỗi con) được chỉ định bởi một loạt các chỉ số. Tổng quát hơn, có thể tạo ra một phần trăm của bất kỳ loại trình tự nào trong Python bằng toán tử lát cắt (

>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
14).

cỡ bước chân

Khoảng thời gian giữa các yếu tố liên tiếp của một chuỗi tuyến tính. Đối số thứ ba (và đối số tùy chọn) cho hàm

>>> thing = 2, 4, 6, 8
>>> type(thing)

>>> thing
(2, 4, 6, 8)
15 được gọi là kích thước bước. Nếu không được chỉ định, nó mặc định là 1.

đi qua

Để lặp lại thông qua các yếu tố của một bộ sưu tập, thực hiện một thao tác tương tự trên mỗi.

Tuple

Một loại dữ liệu chứa một chuỗi các yếu tố thuộc bất kỳ loại nào, như một danh sách, nhưng là bất biến. Tuples có thể được sử dụng bất cứ nơi nào một loại bất biến là bắt buộc, chẳng hạn như một khóa trong từ điển (xem chương tiếp theo).

nhiệm vụ chuyển nhượng

Một bài tập cho tất cả các yếu tố trong một tuple bằng cách sử dụng một câu lệnh gán duy nhất. Việc gán tuple xảy ra song song chứ không phải theo trình tự, làm cho nó hữu ích cho việc hoán đổi các giá trị.

Sự khác biệt giữa chuỗi và danh sách trong Python là gì?

Một chuỗi là một chuỗi các ký tự giữa trích dẫn đơn hoặc đôi. Danh sách là một chuỗi các mục, trong đó mỗi mục có thể là bất cứ thứ gì (một số nguyên, một float, một chuỗi, v.v.). A list is a sequence of items, where each item could be anything (an integer, a float, a string, etc).

Làm thế nào danh sách khác với chuỗi và tuple?

Sự khác biệt chính giữa các bộ dữ liệu và danh sách là các bộ dữ liệu là bất biến trái ngược với các danh sách có thể thay đổi.Do đó, có thể thay đổi một danh sách nhưng không phải là một tuple.Nội dung của một tuple không thể thay đổi một khi chúng đã được tạo ra trong Python do tính bất biến của các bộ dữ liệu.tuples are immutable as opposed to lists which are mutable. Therefore, it is possible to change a list but not a tuple. The contents of a tuple cannot change once they have been created in Python due to the immutability of tuples.

Danh sách tuple và chuỗi trong Python là gì?

Danh sách, chuỗi và bộ dữ liệu được đặt hàng các chuỗi của các đối tượng.Không giống như các chuỗi chỉ chứa các ký tự, danh sách và bộ dữ liệu có thể chứa bất kỳ loại đối tượng nào.Danh sách và bộ dữ liệu giống như mảng.Tuples như dây là bất biến.ordered sequences of objects. Unlike strings that contain only characters, list and tuples can contain any type of objects. Lists and tuples are like arrays. Tuples like strings are immutables.

Sự khác biệt giữa danh sách chuỗi và kiểu dữ liệu Tuple giải thích với các ví dụ là gì?

Danh sách là động, trong khi bộ tuple có đặc điểm tĩnh.Điều này có nghĩa là các danh sách có thể được sửa đổi trong khi các bộ dữ liệu không thể được sửa đổi, tuple nhanh hơn danh sách vì tính tự nhiên.Danh sách được biểu thị bằng dấu ngoặc vuông nhưng các bộ dữ liệu được ký hiệu là dấu ngoặc đơn.. This means that lists can be modified whereas tuples cannot be modified, the tuple is faster than the list because of static in nature. Lists are denoted by the square brackets but tuples are denoted as parenthesis.