سلام
من میخوام وقتی دو عنصر لیست را عوض کردم هم لیست اولیه را داشته باشم هم لیستی که عناصرش عوض شده
اومدم اولش لیست را ریختم تو یه لیست دیگه به اسم 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=[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)
پیشنهاد میکنم این لینک رو هم مطالعه کنید
آخرین ویرایش به وسیله sd702004 : سه شنبه 19 فروردین 1399 در 21:50 عصر
بی نهایت ممنونم
کاملا درسته
واقعلا ممنون