سلام
من میخوام وقتی دو عنصر لیست را عوض کردم هم لیست اولیه را داشته باشم هم لیستی که عناصرش عوض شده
اومدم اولش لیست را ریختم تو یه لیست دیگه به اسم b ولی بازم نشد
a=[1,2,3]
b=a
a[0],a[2]=a[2],a[0]
print(a)
print(b)
اینم خروجی
[3, 2, 1]
[3, 2, 1]
Printable View
سلام
من میخوام وقتی دو عنصر لیست را عوض کردم هم لیست اولیه را داشته باشم هم لیستی که عناصرش عوض شده
اومدم اولش لیست را ریختم تو یه لیست دیگه به اسم b ولی بازم نشد
a=[1,2,3]
b=a
a[0],a[2]=a[2],a[0]
print(a)
print(b)
اینم خروجی
[3, 2, 1]
[3, 2, 1]
اگر درست متوجه منظور تون شده باشم بایستی خط دوم رو اینطوری بنویسید:
b = a.copy()
بی نهایت ممنونم جواب دادین
کاملا درسته
ولی راستش اینجا میام از همین قاعده استفاده میکنم نمیشه
u=list.copy()for x in list:
#a makan 0 dar yek list az majmooe ra neshan midahad
a=list
[list.index(x)].index(0)
try:
if x.index(a + 3) in x:
x[a], x[a + 3] = x[a + 3], x[a]
except:
pass
continue
print(list)
print(u)
خروجی
[[3, 1, 7, 8, 2, 4, 0, 6, 5], [2, 0, 8, 3, 5, 1, 4, 6, 7]]
[[3, 1, 7, 8, 2, 4, 0, 6, 5], [2, 5, 8, 3, 0, 1, 4, 6, 7]]
[[3, 1, 7, 8, 2, 4, 0, 6, 5], [2, 5, 8, 3, 0, 1, 4, 6, 7]]
لیست اول قبل از جابه جایی
لیست دوم بعد از جابه جابی
لیست سوم u
:ناراحت:
با توجه به اینکه در این مثال لیست تون خودش شامل یک لیست دیگه هست شرایطش با سوال اول تون متفاوته. یک راه ساده میتونه این باشه:
u = [ list[0].copy(), list[1].copy() ]
یا این روش:
u = []
for i in list: u.append(i.copy())
روش دیگه هم استفاده از deepcopy هست. برای این کار کافیه ماژول copy رو ایمپورت کنید و کد رو اینطوری تغییر بدین:
import copy
u = copy.deepcopy(list)
پیشنهاد میکنم این لینک رو هم مطالعه کنید
بی نهایت ممنونم
کاملا درسته
واقعلا ممنون