

هیچ درکی از تاپل ها در پایتون وجود ندارد.
با این حال، میتوانید با اجرای یک عبارت مولد در داخل، مفاهیم چندگانه را تقلید کنید tuple()
فراخوانی تابع
مثلا:
numbers = [1, 2, 3, 4, 5] # 'Tuple comprehension' squares = tuple(x**2 for x in numbers) print(squares) # Output: (1, 4, 9, 16, 25)
این آموزش به شما می آموزد که چگونه با استفاده از عبارات مولد در داخل tuple()
عملکرد.
شما یاد خواهید گرفت که عبارت مولد چیست و چگونه است tuple()
تابع با یک عبارت مولد کار می کند. همچنین یاد خواهید گرفت که چرا اگر به عملکرد اهمیت می دهید، نباید درک چندگانه را انجام دهید.
بیایید به آن بپریم!
چگونه کار می کند؟
هیچ درکی از تاپل ها در پایتون وجود ندارد. با این حال، از نظر نحوی، یک جایگزین نزدیک وجود دارد!
برای ایجاد یک تاپل با نحوی که شبیه درک تاپل در پایتون است، می توانید یک عبارت مولد را در tuple()
فراخوانی تابع
values = tuple(elem for elem in iterable)
نمونه ای از آن را قبلا در مقدمه مشاهده کردید. اما بیایید نگاهی دقیق تر به نحوه عملکرد آن بیندازیم.
1. عبارت مولد در پایتون چیست؟
در پایتون، عبارت مولد یک روش کوتاه برای ایجاد یک شی مولد است. این شبیه به درک لیست است، اما به جای ایجاد یک لیست، یک ژنراتور ایجاد می کند.
ژنراتور یک تکرار کننده است که به جای ذخیره کردن آنها در حافظه، مقادیر را در لحظه تولید می کند. این امر باعث کارآمدتر شدن آن میشود، بهویژه زمانی که با مجموعههای بزرگ داده سروکار داریم. اطلاعات بیشتر در مورد ژنراتورها را اینجا بخوانید.
در اینجا مثالی از عبارت مولد آورده شده است:
# Create a generator that generates the squares of numbers from 1 to 10 squares = (x**2 for x in range(1, 11))
برای استفاده از مقادیر تولید شده توسط یک ژنراتور، می توانید با استفاده از یک حلقه for از طریق آن حلقه بزنید.
for square in squares: print(square)
خروجی:
1 4 9 16 25 36 49 64 81 100
از طرف دیگر، می توانید از داخلی استفاده کنید next()
تابع برای تولید مقدار بعدی در دنباله.
مثلا:
# Generate squares from 1 to 10 squares = (x**2 for x in range(1, 11)) # Print the first five squares for i in range(5): print(next(squares))
خروجی:
1 4 9 16 25
توجه داشته باشید که مربع ها به جای اینکه در حافظه ذخیره شوند، در لحظه محاسبه می شوند. به همین دلیل، شما می توانید از یک ژنراتور برای تولید مربع تا بی نهایت بدون مشکل حافظه استفاده کنید.
2. تابع tuple() در پایتون چیست؟
در پایتون، tuple()
تابع برای ایجاد یک تاپل یا تبدیل یک لیست مشابه تکرارپذیر به یک تاپل استفاده می شود.
یک هیئت دنباله ای از مقادیر است که قابل تغییر نیست (غیرقابل تغییر).
تاپل ها شبیه به لیست ها هستند، اما عموما برای اهداف متفاوتی استفاده می شوند. در حالی که یک لیست برای ذخیره مجموعه ای از عناصر مرتبط استفاده می شود، یک تاپل برای ذخیره تعداد ثابتی از عناصر که ممکن است به هم مرتبط نباشند استفاده می شود.
در اینجا نمونه ای از ایجاد یک تاپل از یک لیست با استفاده از tuple()
عملکرد:
# Create a tuple with three elements my_tuple = tuple([1, 2, 3]) # Print the tuple print(my_tuple)
خروجی:
(1, 2, 3)
این tuple()
تابع یک دنباله (مانند لیست) را به عنوان آرگومان می گیرد و یک تاپل با همان عناصر را برمی گرداند. اگر میخواهید تکرارپذیر دیگری مانند یک لیست را به یک تاپل تبدیل کنید، میتواند مفید باشد.
3. tuple() + تولید عبارت
اکنون که درک اساسی از چیستی عبارت مولد و tuple()
عملکرد، شما کلیدهایی برای درک نحوه عملکرد “درک دوگانه” دارید..
بیایید به مثال در مقدمه نگاه کنیم:
numbers = [1, 2, 3, 4, 5] # 'Tuple comprehension' squares = tuple(x**2 for x in numbers) print(squares) # Output: (1, 4, 9, 16, 25)
در اینجا نتیجه است x**2 for x in numbers
یک ژنراتور است. مانند هر تکراری دیگر در پایتون است. می توانید روی عناصر آن تکرار کنید یا آن را به چیز دیگری تبدیل کنید، مانند یک لیست یا تاپل.
این tuple()
مولد را به چند مقدار تبدیل می کند.
از “درک چندگانه” استفاده نکنید
تا زمانی که به عملکرد اهمیت نمی دهید، نباید از درک چندگانه استفاده کنید.
اگر نیاز دارید تاپل را به گونه ای بسازید که شبیه درک مطلب باشد، بهترین راه این است:
- با درک فهرستی تهیه کنید.
- لیست را به یک تاپل تبدیل کنید.
این سریعترین نتایج را می دهد.
برای آزمایش این، اجازه دهید یک مسابقه عملکرد کوچک با استفاده از رویکردهای مختلف اجرا کنیم تا یک تاپل با درک درست ایجاد کنیم. (این دستورات را از خط فرمان برای تکرار اجرا کنید)
1. درک فهرست
python3 -m timeit 'l = [i for i in range(1000)]'
خروجی:
20000 loops, best of 5: 13.6 usec per loop
2. از درک لیست چند برابر کنید
python3 -m timeit 'l = tuple([i for i in range(1000)])'
خروجی:
20000 loops, best of 5: 14.8 usec per loop
3. یک تاپل از یک ژنراتور
python3 -m timeit 'l = tuple(i for i in range(1000))'
خروجی:
10000 loops, best of 5: 20.7 usec per loop
4. چند دستور unpacking
python3 -m timeit 'l = *(i for i in range(1000)),'
خروجی:
10000 loops, best of 5: 21.8 usec per loop
همانطور که می بینید، روش دوم سریع ترین بود.
به عبارت دیگر، برای استفاده از “درک چندگانه” در پایتون، به سادگی یک لیست با استفاده از درک لیست ایجاد کنید و یک تاپل از لیست با استفاده از tuple()
عملکرد.
خلاصه
امروز فهمیدید که درک تاپل در پایتون وجود ندارد. برای تقلید از رفتار و به دست آوردن نتیجه ای مشابه از لحاظ نحوی، استفاده کنید tuple()
تابع با بیان ژنراتور
با تشکر برای خواندن. کد نویسی مبارک!
همچنین بخوانید
آشنایی با پایتون