আমি কিছু পাইথন কোড বিশ্লেষণ করছি এবং আমি জানি না
pop = population[:]
মানে। এটি জাভাতে অ্যারের তালিকার মতো বা দ্বি-মাত্রিক অ্যারের মতো কিছু?
আমি কিছু পাইথন কোড বিশ্লেষণ করছি এবং আমি জানি না
pop = population[:]
মানে। এটি জাভাতে অ্যারের তালিকার মতো বা দ্বি-মাত্রিক অ্যারের মতো কিছু?
list
সরবরাহ clear
এবং copy
পদ্ধতিগুলি যথাক্রমে করা del mylist[:]
বা সমান করার সমান mylist[:]
। এগুলি সাধারণভাবে পরিবর্তনীয় ক্রমগুলির জন্য প্রয়োজন হয় না, তাই আপনি যদি একটি স্বেচ্ছাসেবী পরিবর্তনযোগ্য ক্রম পেতে পারেন তবে আপনি স্লাইস ভিত্তিক ক্রিয়াকলাপগুলিতে আটকে থাকতে চাইবেন তবে নামকরণ পদ্ধতিগুলি অন্তত উপলব্ধ list
।
উত্তর:
এটি স্লাইস নোটেশনের একটি উদাহরণ এবং এটি কী করে তা নির্ভর করে population
। যদি population
একটি তালিকা থাকে তবে এই লাইনটি তালিকার একটি অগভীর অনুলিপি তৈরি করবে । টাইপ tuple
বা a এর কোনও অবজেক্টের জন্য str
, এটি কিছুই করবে না (লাইনটি ছাড়া এটি একই রকম করবে [:]
) এবং একটি (বলুন) NumPy অ্যারের জন্য, এটি একই ডেটাতে একটি নতুন ভিউ তৈরি করবে।
l.copy()
আরও পাঠযোগ্য, তবে এটি কার্যকর হবে না।
list(l)
সর্বদা কাজ করে, আরও পঠনযোগ্য এবং এর মতো কিছু দিয়ে একটি অনুলিপি ফেরত দেওয়ার নিশ্চয়তাও রয়েছেnumpy.array
list.clear()
। এটি কিছু সময় নেবে, যদিও এটি এসও-তে এই ধরণের প্রশ্নগুলির উল্লেখযোগ্য হ্রাস ঘটাবে। :)
A[deque(chain((k,), repeat(slice(None), len(A.shape) - 1)).rotate(axis)]
, আমি প্রায় সবসময় পছন্দ করি numpy.rollaxis(A, axis, 0)[k]
। সাধারণভাবে, আমি খুব কমই এমন ব্যবহারের মুখোমুখি হয়েছি যেখানে আপনাকে সরাসরি slice()
অবজেক্ট তৈরি করতে হবে । আপনার যদি যাইহোক তাদের প্রয়োজন হয় তবে নুমপি s_
সাহায্যকারীকে তাদের তৈরি করার বিকল্প উপায় হিসাবে সরবরাহ করে।
এটি জানতেও সাহায্য করতে পারে যে সাধারণভাবে একটি তালিকা স্লাইস তালিকার একটি অংশের একটি অনুলিপি তৈরি করে। উদাহরণস্বরূপ population[2:4]
জনসংখ্যা [2] এবং জনসংখ্যা [3] (স্লাইসিং ডান-এক্সক্লুসিভ) সমেত একটি তালিকা ফিরিয়ে দেবে। বাম এবং ডান সূচকটি population[:]
যথাক্রমে 0 এবং দৈর্ঘ্যের (জনসংখ্যার) হিসাবে রেখে পুরো তালিকাটি নির্বাচন করে away সুতরাং এটি একটি অনুলিপি একটি তালিকার একটি অনুলিপি করা।
ভাল ... এটি সত্যিই প্রসঙ্গে নির্ভর করে। পরিশেষে, এটি একটি পাসের slice
বস্তু ( slice(None,None,None)
: নিম্নলিখিত পদ্ধতি এক করা) __getitem__
, __setitem__
অথবা __delitem__
। (প্রকৃতপক্ষে, যদি অবজেক্টটির একটি থাকে তবে এটি __getslice__
পরিবর্তে ব্যবহৃত হবে __getitem__
, তবে এটি এখন অবচয় করা হয়েছে এবং এটি ব্যবহার করা উচিত নয়)।
বস্তুগুলি স্লাইসের সাহায্যে তারা যা চায় তা করতে পারে।
এর প্রেক্ষাপটে:
x = obj[:]
এটি obj.__getitem__
পাস করা স্লাইস অবজেক্টের সাথে কল করবে In বাস্তবে এটি সম্পূর্ণরূপে সমান:
x = obj[slice(None,None,None)]
(যদিও প্রাক্তন সম্ভবত আরও দক্ষ কারণ এটি slice
নির্মাণকারীর সন্ধান করতে হবে না - এটি সমস্ত বাইটকোডে সম্পন্ন হয়েছে)।
বেশিরভাগ অবজেক্টের জন্য, এটি ক্রমের একটি অংশের অগভীর অনুলিপি তৈরির উপায়।
পরবর্তী:
x[:] = obj
__setitem__
উপর ভিত্তি করে আইটেম সেট করার একটি উপায় (এটি কল করে ) obj
।
এবং, আমি মনে করি আপনি সম্ভবত কি অনুমান করতে পারেন:
del x[:]
কল ;-)।
আপনি বিভিন্ন স্লাইস পাস করতে পারেন:
x[1:4]
নির্মাণ slice(1,4,None)
x[::-1]
নির্মাণ slice(None,None,-1)
এবং তাই এগিয়ে। আরও পড়ুন: পাইথনের স্লাইস নোটেশন ব্যাখ্যা করুন
এটি ক্রমের শুরু থেকে শেষ অবধি এক টুকরো যা সাধারণত অগভীর অনুলিপি তৈরি করে।
(ভাল, এটি এর চেয়েও বেশি , তবে আপনার এখনও যত্নের প্রয়োজন নেই))
এটি তালিকার একটি অনুলিপি তৈরি করে, ইতিমধ্যে বিদ্যমান তালিকার জন্য কেবল নতুন নাম নির্ধারণ করে।
[:]
অ্যারেতে সীমিতকরণ বা টুকরো টুকরো করার জন্য ব্যবহৃত হয়,
যেমন: হ্যাশ উদাহরণস্বরূপ:
[1: 5] 1 অন্তর্ভুক্ত এবং 5 একচেটিয়া অর্থাত্ 1-4
[শুরু: শেষ]
স্লাইসিংয়ের জন্য অ্যারেতে মূলত ব্যবহৃত হয়, বন্ধনী বুঝতে পারছেন এর অর্থ পরিবর্তনশীল মান বা প্রদর্শনের জন্য কী এবং ":" প্যাকেটে পুরো অ্যারে সীমাবদ্ধ বা টুকরো টুকরো করার জন্য ব্যবহৃত হয়।
a[1:5]
উপাদানগুলি 2-4 নয়, 1-4 প্রদান করে।