Tôi đang cố triển khai một thuật toán bằng Python để tạo tất cả các danh sách của một danh sách. Nhưng tôi Trong vòng lặp của tôi, tôi muốn giữ lại tiền tố ban đầu và danh sách còn lại nguyên vẹn, và do đó tôi đang cố gắng tạo một bản sao của các danh sách đó bằng newprefix và newrest, tuy nhiên khi in các biến còn lại ở mỗi lần lặp lại, tôi thấy rằng ngay cả phần còn lại biến là nhận được sửa đổi! Làm thế nào tôi có thể tạo một bản sao nông của danh sách bằng Python? Hoặc là có một vấn đề khác với logic cố gắng của tôi?Cách tạo một bản sao nông của một danh sách bằng Python
def perm(prefix, rest):
if len(rest) == 0:
print prefix
for i in range(len(rest)):
#prints in the for loop are just for debugging
print "rest:", rest
print "i=", i
newprefix = prefix
newprefix.append(rest[i])
newrest = rest
newrest.pop(i)
print "old pre : ", prefix
print "newpre=", newprefix
print "newrest=", newrest
perm(newprefix, newrest)
perm([], ['a','b','c'])
Trừ khi điều này là để làm giàu cho riêng bạn, bạn có thể nên sử dụng itertools.permutations(). – dstromberg