Xác định quy trình, cùng một cấu trúc, có hai đầu vào. Nó sẽ xuất ra True
nếu danh sách có cùng cấu trúc và False
nếu không. Hai giá trị, p và q có cấu trúc tương tự nếu:Làm thế nào để tìm ra hai danh sách có cùng cấu trúc trong python?
Neither p or q is a list.
Both p and q are lists, they have the same number of elements, and each
element of p has the same structure as the corresponding element of q.
EDIT: Để làm cho hình ảnh rõ ràng đây là các kết quả mong muốn
same_structure([1, 0, 1], [2, 1, 2])
---> True
same_structure([1, [0], 1], [2, 5, 3])
---> False
same_structure([1, [2, [3, [4, 5]]]], ['a', ['b', ['c', ['d', 'e']]]])
---> True
same_structure([1, [2, [3, [4, 5]]]], ['a', ['b', ['c', ['de']]]])
---> False
Tôi nghĩ đệ quy sẽ là tốt nhất để giải quyết vấn đề này trong python Tôi đã đưa ra mã sau nhưng nó không hoạt động.
def is_list(p):
return isinstance(p, list)
def same_structure(a,b):
if not is_list(a) and not is_list(b):
return True
elif is_list(a) and is_list(b):
if len(a) == len(b):
same_structure(a[1:],b[1:])
else:
return False
@SvenMarnach: trừ khi tôi đang đọc sai câu hỏi, [2, (3,4)] và [2, (5,)] có cùng cấu trúc: cả hai danh sách đều giống nhau số phần tử, và mỗi phần tử của p có cấu trúc giống như phần tử tương ứng của q vì không phải là một danh sách. IOW nó chỉ là cấu trúc danh sách quan trọng, các giá trị không (để [2] và [3] có cấu trúc giống nhau.) – DSM
Xác định "cấu trúc giống nhau" cho một danh sách như cho python ['a', '1 '] không bằng [' 1 ',' a ']. Có lẽ bạn cũng nên sử dụng các bộ. – KurzedMetal
Trong ngữ cảnh này mặc dù tôi nghĩ rằng tôi * sẽ * nói rằng chúng chứa các phần tử giống nhau, trong đó bình đẳng được xác định bởi quan hệ đã cho. Tôi nghĩ rằng tôi đã có một câu hỏi như thế này bản thân mình, trở lại trong ngày. – DSM