Hãy nhận biết những điều sau đây:
>>>listA = ['a', 'a', 'b','b','b','c']
>>>listB = ['b', 'a','a','b','c','d']
>>>all(item in listB for item in listA)
True
Nếu bạn đọc "tất cả" dòng như bạn sẽ bằng tiếng Anh, Điều này không sai nhưng có thể gây hiểu lầm, vì listA có thứ ba 'b' nhưng listB thì không.
này cũng có cùng một vấn đề:
def list1InList2(list1, list2):
for item in list1:
if item not in list2:
return False
return True
Chỉ cần một lưu ý. Các tính năng sau không hoạt động:
>>>tupA = (1,2,3,4,5,6,7,8,9)
>>>tupB = (1,2,3,4,5,6,6,7,8,9)
>>>set(tupA) < set(TupB)
False
Nếu bạn chuyển đổi bộ danh sách thành danh sách vẫn không hoạt động. Tôi không biết tại sao dây làm việc nhưng ints thì không.
trình nhưng có cùng một vấn đề không giữ đếm lần xuất hiện yếu tố:
>>>set(tupA).issubset(set(tupB))
True
Sử dụng bộ không phải là một giải pháp toàn diện cho phù hợp với yếu tố đa xảy ra xuất.
Nhưng đây là một giải pháp một lót/thích ứng với câu trả lời shantanoo mà không thử/trừ:
all(True if sequenceA.count(item) <= sequenceB.count(item) else False for item in sequenceA)
Một chức năng được xây dựng trong gói một danh sách hiểu cách sử dụng một nhà điều hành có điều kiện ternary. Python là tuyệt vời! Lưu ý rằng "< =" không được "==".
Với chuỗi giải pháp A và B này có thể gõ tuple và danh sách và các "chuỗi" khác bằng phương pháp "đếm". Các phần tử trong cả hai trình tự có thể là hầu hết các loại. Tôi sẽ không sử dụng điều này với dicts như bây giờ, do đó sử dụng "chuỗi" thay vì "lặp lại".
Xin chào, phần thứ hai là những gì tôi đang cố gắng làm. Có vẻ như đó là cách duy nhất để đi. Cảm ơn! – pogo
Không thành công trong trường hợp '['s', 'e', 'r', '', '', '', 'y']' và '['', '', '', 'y' ] ' – SIslam
@SIslam Phụ thuộc vào thứ tự. Danh sách thứ hai là một tập hợp con của danh sách cũ, vì vậy giải pháp trong câu trả lời của tôi sẽ nhận ra chính xác nó. – poke