>>> lis=[['a','b','c'],['d','e','f']]
>>> any['d' in x for x in lis]
True
Biểu thức máy phát sử dụng
9$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "any['d' in x for x in lis]"
1000000 loops, best of 3: 1.32 usec per loop
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "any['d' in x for x in lis]"
1000000 loops, best of 3: 1.32 usec per loop
Biểu thức máy phát
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "'d' in [y for x in lis for y in x]"
100000 loops, best of 3: 1.56 usec per loop
danh sách hiểu
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "'d' in [y for x in lis for y in x]"
100000 loops, best of 3: 3.23 usec per loop
Làm thế nào nếu mặt hàng ở gần cuối, hoặc không có mặt?
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "any['d' in x for x in lis]"
1000000 loops, best of 3: 1.32 usec per loop
9 nhanh hơn so với danh sách hiểu$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]"
"'NOT THERE' in [y for x in lis for y in x]"
100000 loops, best of 3: 4.4 usec per loop
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]"
"any['NOT THERE' in x for x in lis]"
100000 loops, best of 3: 3.06 usec per loop
Có lẽ nếu danh sách dài hơn 1000 lần?
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "any['d' in x for x in lis]"
1000000 loops, best of 3: 1.32 usec per loop
9 vẫn nhanh hơn$ python -m timeit -s "lis=1000*[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]"
"'NOT THERE' in [y for x in lis for y in x]"
100 loops, best of 3: 3.74 msec per loop
$ python -m timeit -s "lis=1000*[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]"
"any['NOT THERE' in x for x in lis]"
100 loops, best of 3: 2.48 msec per loop
Chúng tôi biết rằng các máy phát điện mất một thời gian để thiết lập, vì vậy cơ hội tốt nhất để LC giành chiến thắng là một danh sách rất ngắn
$ python -m timeit -s "lis=[['a','b','c']]"
"any['c' in x for x in lis]"
1000000 loops, best of 3: 1.12 usec per loop
$ python -m timeit -s "lis=[['a','b','c']]"
"'c' in [y for x in lis for y in x]"
1000000 loops, best of 3: 0.611 usec per loop
Và
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "any['d' in x for x in lis]"
1000000 loops, best of 3: 1.32 usec per loop
9 cũng sử dụng ít bộ nhớ hơn Một danh sách có thể chứa bất kỳ đối tượng sắp xếp nào, ngay cả một danh sách khác [người phụ], từ đó có thể chứa chính những người phụ, v.v. Điều này được gọi là danh sách lồng nhau.nested list. Bạn có thể sử dụng chúng để sắp xếp dữ liệu vào các cấu trúc phân cấp.Danh sách lồng nhau của Python là gì?
Tạo một danh sách lồng nhau
Một danh sách lồng nhau được tạo ra bằng cách đặt một chuỗi các nhóm phụ được phân tách bằng dấu phẩy.
L = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']
Truy cập các mục danh sách lồng nhau theo chỉ mục
Bạn có thể truy cập các mục riêng lẻ trong danh sách lồng nhau bằng nhiều chỉ mục.
Các chỉ mục cho các mục trong danh sách lồng nhau được minh họa như dưới đây:
L = ['a', 'b', ['cc', 'dd', ['eee', 'fff']], 'g', 'h']
print[L[2]]
# Prints ['cc', 'dd', ['eee', 'fff']]
print[L[2][2]]
# Prints ['eee', 'fff']
print[L[2][2][0]]
# Prints eee
Lập chỉ mục danh sách tiêu cực trong danh sách lồng nhau
Bạn cũng có thể truy cập một danh sách lồng nhau bằng cách lập chỉ mục tiêu cực.
Các chỉ mục tiêu cực đếm ngược từ cuối danh sách. Vì vậy, & nbsp; ____ 23 & nbsp; đề cập đến mục cuối cùng, & nbsp; ____ ____ 24 & nbsp; là thứ hai, v.v.
Các chỉ mục tiêu cực cho các mục trong danh sách lồng nhau được minh họa như dưới đây:
L = ['a', 'b', ['cc', 'dd', ['eee', 'fff']], 'g', 'h']
print[L[-3]]
# Prints ['cc', 'dd', ['eee', 'fff']]
print[L[-3][-1]]
# Prints ['eee', 'fff']
print[L[-3][-1][-2]]
# Prints eee
Thay đổi giá trị mục danh sách lồng nhau
Bạn có thể thay đổi giá trị của một mục cụ thể trong danh sách lồng nhau bằng cách tham khảo số chỉ mục của nó.
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "any['d' in x for x in lis]"
1000000 loops, best of 3: 1.32 usec per loop
0Thêm các mục vào danh sách lồng nhau
Để thêm các giá trị mới vào cuối danh sách lồng nhau, hãy sử dụng phương thức append [].
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "any['d' in x for x in lis]"
1000000 loops, best of 3: 1.32 usec per loop
1Khi bạn muốn chèn một mục tại một vị trí cụ thể trong danh sách lồng nhau, hãy sử dụng phương thức chèn [].
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "any['d' in x for x in lis]"
1000000 loops, best of 3: 1.32 usec per loop
2Bạn có thể hợp nhất một danh sách thành một danh sách khác bằng cách sử dụng phương thức mở rộng [].
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "any['d' in x for x in lis]"
1000000 loops, best of 3: 1.32 usec per loop
3Xóa các mục khỏi danh sách lồng nhau
Nếu bạn biết chỉ mục của mục bạn muốn, bạn có thể sử dụng phương thức pop []. Nó sửa đổi danh sách và trả về mục đã xóa.
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "any['d' in x for x in lis]"
1000000 loops, best of 3: 1.32 usec per loop
4Nếu bạn không cần giá trị bị loại bỏ, hãy sử dụng câu lệnh DEL.
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "any['d' in x for x in lis]"
1000000 loops, best of 3: 1.32 usec per loop
5Nếu bạn không chắc chắn vị trí của mục trong danh sách, hãy sử dụng phương thức Remove [] để xóa nó theo giá trị.
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "any['d' in x for x in lis]"
1000000 loops, best of 3: 1.32 usec per loop
6Tìm độ dài danh sách lồng nhau
Bạn có thể sử dụng chức năng Len [] & NBSP;
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "any['d' in x for x in lis]"
1000000 loops, best of 3: 1.32 usec per loop
7Lặp lại thông qua một danh sách lồng nhau
Để lặp lại các mục của một danh sách lồng nhau, sử dụng đơn giản cho vòng lặp.
$ python -m timeit -s "lis=[['a','b','c'],['d','e','f'],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]" "any['d' in x for x in lis]"
1000000 loops, best of 3: 1.32 usec per loop
8