Khi bạn sử dụng chức năng list
với bất kỳ lần lặp nào, một đối tượng danh sách mới sẽ được tạo với tất cả các phần tử từ có thể lặp lại dưới dạng các phần tử riêng lẻ trong danh sách.
Trong trường hợp của bạn, dây là iterables Python hợp lệ, vì vậy
>>> list('alpha')
['a', 'l', 'p', 'h', 'a']
>>> list('alphanumeric')
['a', 'l', 'p', 'h', 'a', 'n', 'u', 'm', 'e', 'r', 'i', 'c']
Vì vậy, bạn đang kiểm tra một cách hiệu quả nếu một danh sách là danh sách phụ chứa các danh sách khác.
Trong chuỗi chỉ Python có toán tử in
để kiểm tra xem một chuỗi có phải là một phần của chuỗi khác hay không. Đối với tất cả các bộ sưu tập khác, bạn chỉ có thể sử dụng các thành viên riêng lẻ. Trích dẫn số documentation,
Các toán tử in
và not in
kiểm tra thành viên thu nợ. x in s
đánh giá là đúng nếu x
là thành viên của bộ sưu tập s
và sai khác. x not in s
trả về phủ định của x in s
. Kiểm tra thành viên bộ sưu tập theo truyền thống bị ràng buộc theo trình tự; một đối tượng là một thành viên của một bộ sưu tập nếu bộ sưu tập là một chuỗi và chứa một phần tử bằng đối tượng đó. Tuy nhiên, nó có ý nghĩa đối với nhiều loại đối tượng khác để hỗ trợ kiểm tra thành viên mà không phải là một chuỗi. Đặc biệt, từ điển (cho khóa) và bộ hỗ trợ kiểm tra thành viên.
Đối với danh sách và loại bộ, x in y
là đúng nếu và chỉ khi có chỉ mục i
sao cho x == y[i]
là đúng.
Đối với các loại Unicode và chuỗi, x in y
là đúng nếu và chỉ nếu x
là một chuỗi con của y
. Kiểm tra tương đương là y.find(x) != -1
. Lưu ý, x
và y
không cần phải cùng loại; do đó, u'ab'
trong 'abc'
sẽ trả lại True
. Chuỗi trống luôn được coi là chuỗi con của bất kỳ chuỗi nào khác, do đó, ""
trong "abc"
sẽ trả lại True
.
Nếu bạn in 'danh sách ('chữ') ', bạn sẽ nhận thấy rằng nó không có một danh sách con chứa ''alpha'' trong đó. – tdelaney
@tdelaney Nhưng nó chứa danh sách con '['a', 'l', 'p', 'h', 'a']'. Nếu 'in' được kiểm tra cho các danh sách con và không chỉ là thành viên thì danh sách ('alpha') trong danh sách ('chữ và số')' thực sự sẽ trả về 'True'. –