Tôi đã thu thập một số giải pháp được đề cập trong các câu trả lời khác và trong các bình luận, sau đó chạy một bài kiểm tra tốc độ. not set[a].isdisjoint[b]
hóa ra là nhanh nhất, nó cũng không chậm lại nhiều khi kết quả là False
.
Mỗi trong ba lần chạy thử một mẫu nhỏ của các cấu hình có thể có của a
và b
. Thời gian là trong micro giây.
Any with generator and max
2.093 1.997 7.879
Any with generator
0.907 0.692 2.337
Any with list
1.294 1.452 2.137
True in list
1.219 1.348 2.148
Set with &
1.364 1.749 1.412
Set intersection explcit set[b]
1.424 1.787 1.517
Set intersection implicit set[b]
0.964 1.298 0.976
Set isdisjoint explicit set[b]
1.062 1.094 1.241
Set isdisjoint implicit set[b]
0.622 0.621 0.753
import timeit
def printtimes[t]:
print '{:.3f}'.format[t/10.0],
setup1 = 'a = range[10]; b = range[9,15]'
setup2 = 'a = range[10]; b = range[10]'
setup3 = 'a = range[10]; b = range[10,20]'
print 'Any with generator and max\n\t',
printtimes[timeit.Timer['any[x in max[a,b,key=len] for x in min[b,a,key=len]]',setup=setup1].timeit[10000000]]
printtimes[timeit.Timer['any[x in max[a,b,key=len] for x in min[b,a,key=len]]',setup=setup2].timeit[10000000]]
printtimes[timeit.Timer['any[x in max[a,b,key=len] for x in min[b,a,key=len]]',setup=setup3].timeit[10000000]]
print
print 'Any with generator\n\t',
printtimes[timeit.Timer['any[i in a for i in b]',setup=setup1].timeit[10000000]]
printtimes[timeit.Timer['any[i in a for i in b]',setup=setup2].timeit[10000000]]
printtimes[timeit.Timer['any[i in a for i in b]',setup=setup3].timeit[10000000]]
print
print 'Any with list\n\t',
printtimes[timeit.Timer['any[[i in a for i in b]]',setup=setup1].timeit[10000000]]
printtimes[timeit.Timer['any[[i in a for i in b]]',setup=setup2].timeit[10000000]]
printtimes[timeit.Timer['any[[i in a for i in b]]',setup=setup3].timeit[10000000]]
print
print 'True in list\n\t',
printtimes[timeit.Timer['True in [i in a for i in b]',setup=setup1].timeit[10000000]]
printtimes[timeit.Timer['True in [i in a for i in b]',setup=setup2].timeit[10000000]]
printtimes[timeit.Timer['True in [i in a for i in b]',setup=setup3].timeit[10000000]]
print
print 'Set with &\n\t',
printtimes[timeit.Timer['bool[set[a] & set[b]]',setup=setup1].timeit[10000000]]
printtimes[timeit.Timer['bool[set[a] & set[b]]',setup=setup2].timeit[10000000]]
printtimes[timeit.Timer['bool[set[a] & set[b]]',setup=setup3].timeit[10000000]]
print
print 'Set intersection explcit set[b]\n\t',
printtimes[timeit.Timer['bool[set[a].intersection[set[b]]]',setup=setup1].timeit[10000000]]
printtimes[timeit.Timer['bool[set[a].intersection[set[b]]]',setup=setup2].timeit[10000000]]
printtimes[timeit.Timer['bool[set[a].intersection[set[b]]]',setup=setup3].timeit[10000000]]
print
print 'Set intersection implicit set[b]\n\t',
printtimes[timeit.Timer['bool[set[a].intersection[b]]',setup=setup1].timeit[10000000]]
printtimes[timeit.Timer['bool[set[a].intersection[b]]',setup=setup2].timeit[10000000]]
printtimes[timeit.Timer['bool[set[a].intersection[b]]',setup=setup3].timeit[10000000]]
print
print 'Set isdisjoint explicit set[b]\n\t',
printtimes[timeit.Timer['not set[a].isdisjoint[set[b]]',setup=setup1].timeit[10000000]]
printtimes[timeit.Timer['not set[a].isdisjoint[set[b]]',setup=setup2].timeit[10000000]]
printtimes[timeit.Timer['not set[a].isdisjoint[set[b]]',setup=setup3].timeit[10000000]]
print
print 'Set isdisjoint implicit set[b]\n\t',
printtimes[timeit.Timer['not set[a].isdisjoint[b]',setup=setup1].timeit[10000000]]
printtimes[timeit.Timer['not set[a].isdisjoint[b]',setup=setup1].timeit[10000000]]
printtimes[timeit.Timer['not set[a].isdisjoint[b]',setup=setup3].timeit[10000000]]
print
Có 2 cách để hiểu kiểm tra xem danh sách có chứa các yếu tố của danh sách khác không. Đầu tiên, sử dụng tất cả [] các hàm để kiểm tra xem danh sách Python có chứa tất cả các yếu tố của danh sách khác không.all[] functions to check if a Python list contains all the elements of another list.
Và thứ hai, sử dụng bất kỳ [] chức năng nào để kiểm tra xem danh sách có chứa bất kỳ yếu tố nào của một hàm khác không. any[] function to check if the list contains any elements of another one.
Chương trình đơn giản để kiểm tra danh sách chứa các yếu tố của danh sách khác.
tất cả [] phương thức
List1 = ['python', 'JS', 'c#', 'go', 'c', 'c++']
List2 = ['c#', 'Java', 'python']
check = all[item in List1 for item in List2]
if check:
print["The list1 contains all elements of the list2"]
else:
print["No, List1 doesn't have all elements of the List2."]
Output::
bất kỳ [] phương thức
Sử dụng any[]
& A Hiểu danh sách:
List1 = ['python', 'JS', 'c#', 'go', 'c', 'c++']
List2 = ['c#', 'Java', 'python']
check = any[item in List1 for item in List2]
if check:
print["The list1 contains some elements of the list2"]
else:
print["No, List1 doesn't have any elements of the List2."]
Đầu ra: Danh sách1 chứa một số yếu tố của List2: The list1 contains some elements of the list2
Một phương pháp khác sử dụng vòng lặp
Cách tiếp cận tìm kiếm tùy chỉnh cơ bản này trong đó các thử nghiệm nếu danh sách đầu tiên chứa mục thứ hai bằng cách sử dụng vòng lặp thời gian.
Trong khi lặp lại các danh sách nếu nhận được một phần tử chồng chéo, thì hàm trả về true. Tìm kiếm tiếp tục cho đến khi không có yếu tố để khớp và trả về sai.
def list_contains[List1, List2]:
check = False
# Iterate in the 1st list
for m in List1:
# Iterate in the 2nd list
for n in List2:
# if there is a match
if m == n:
check = True
return check
return check
List1 = ['a', 'e', 'i', 'o', 'u']
List2 = ['x', 'y', 'z', 'l', 'm']
print[list_contains[List1, List2]]
Đầu ra: Sai: False
Hãy bình luận nếu bạn có bất kỳ nghi ngờ và đề xuất nào về chủ đề danh sách Python này.
Lưu ý: IDE: & NBSP; Pycharm & NBSP; 2021.3.3 [Phiên bản cộng đồng] IDE: PyCharm 2021.3.3 [Community Edition]
Windows 10
Python 3.10.1
Tất cả & nbsp; ví dụ python & nbsp; là trong & nbsp; Python & nbsp; 3, vì vậy có thể khác với các phiên bản Python 2 hoặc nâng cấp. Python Examples are in Python 3, so Maybe its different from python 2 or upgraded versions.
Bằng cấp về Khoa học máy tính và Kỹ sư: Nhà phát triển ứng dụng và có nhiều ngôn ngữ lập trình kinh nghiệm. Sự nhiệt tình cho công nghệ và thích học kỹ thuật.