পাইথন তালিকা

পাইথনের একটি দুর্দান্ত বিল্ট-ইন তালিকার ধরন রয়েছে যার নাম "তালিকা"। লিস্ট লিটারেলগুলি বর্গাকার বন্ধনীর মধ্যে লেখা হয় [ ]। তালিকাগুলি স্ট্রিংগুলির মতোই কাজ করে -- লেন() ফাংশন এবং বর্গাকার বন্ধনী [ ] ব্যবহার করে ডেটা অ্যাক্সেস করুন, প্রথম উপাদানটি সূচক 0-এর সাথে। (অফিসিয়াল python.org তালিকা ডক্স দেখুন।)

  colors = ['red', 'blue', 'green']
  print(colors[0])    ## red
  print(colors[2])    ## green
  print(len(colors))  ## 3

স্ট্রিংয়ের তালিকা 'লাল' 'নীল' সবুজ'

একটি = তালিকার সাথে অ্যাসাইনমেন্ট একটি অনুলিপি তৈরি করে না। পরিবর্তে, অ্যাসাইনমেন্ট দুটি ভেরিয়েবলকে মেমরির একটি তালিকার দিকে নির্দেশ করে।

  b = colors   ## Does not copy the list

উভয় রং এবং b একটি তালিকা নির্দেশ করে

"খালি তালিকা" হল একটি খালি জোড়া বন্ধনী [ ]। '+' দুটি তালিকা যুক্ত করতে কাজ করে, তাই [1, 2] + [3, 4] ফলন [1, 2, 3, 4] (এটি যেমন + স্ট্রিং সহ)।

জন্য এবং IN

পাইথনের *ফর* এবং *ইন* কনস্ট্রাক্টগুলি অত্যন্ত দরকারী, এবং আমরা তাদের প্রথম ব্যবহার তালিকা সহ দেখতে পাব। *ফর* গঠন -- for var in list -- একটি তালিকার (বা অন্যান্য সংগ্রহ) প্রতিটি উপাদান দেখার একটি সহজ উপায়। পুনরাবৃত্তির সময় তালিকা থেকে যোগ বা অপসারণ করবেন না।

  squares = [1, 4, 9, 16]
  sum = 0
  for num in squares:
    sum += num
  print(sum)  ## 30

আপনি যদি জানেন যে তালিকায় কী ধরণের জিনিস রয়েছে, লুপে একটি পরিবর্তনশীল নাম ব্যবহার করুন যা সেই তথ্য ক্যাপচার করে যেমন "সংখ্যা", বা "নাম", বা "ইউআরএল"। যেহেতু পাইথন কোডে আপনাকে প্রকারগুলি মনে করিয়ে দেওয়ার জন্য অন্য সিনট্যাক্স নেই, তাই আপনার ভেরিয়েবলের নামগুলি আপনার জন্য যা ঘটছে তা সোজা রাখার একটি মূল উপায়। (এটি কিছুটা বিভ্রান্তিকর। আপনি পাইথনের সাথে আরও বেশি এক্সপোজার লাভ করার সাথে সাথে আপনি টাইপ ইঙ্গিতগুলির রেফারেন্স দেখতে পাবেন যা আপনাকে আপনার ফাংশন সংজ্ঞাতে টাইপিং তথ্য যোগ করতে দেয়। পাইথন যখন আপনার প্রোগ্রামগুলি চালায় তখন এই ধরনের ইঙ্গিতগুলি ব্যবহার করে না। তারা অন্যান্য প্রোগ্রাম যেমন IDEs (ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট) এবং স্ট্যাটিক অ্যানালাইসিস টুল যেমন লিন্টার/টাইপ চেকার ব্যবহার করে তা যাচাই করার জন্য আপনার ফাংশনগুলিকে সামঞ্জস্যপূর্ণ আর্গুমেন্টের সাথে কল করা হয়।)

একটি তালিকায় (বা অন্য সংগ্রহে) কোনো উপাদান উপস্থিত হলে পরীক্ষা করার একটি সহজ উপায় হল *ইন* কনস্ট্রাক্ট -- value in collection -- সংগ্রহে থাকা মানটি সত্য/মিথ্যা ফেরত দিলে পরীক্ষা করে।

  list = ['larry', 'curly', 'moe']
  if 'curly' in list:
    print('yay') ## yay

পাইথন কোডে ফর/ইন কনস্ট্রাক্টগুলি খুব সাধারণভাবে ব্যবহৃত হয় এবং তালিকা ছাড়া অন্য ডেটা টাইপগুলিতে কাজ করে, তাই আপনার কেবল তাদের সিনট্যাক্স মুখস্থ করা উচিত। আপনার অন্য ভাষা থেকে অভ্যাস থাকতে পারে যেখানে আপনি একটি সংগ্রহে ম্যানুয়ালি পুনরাবৃত্তি শুরু করেন, যেখানে পাইথনে আপনার শুধুমাত্র জন্য/ইন ব্যবহার করা উচিত।

আপনি একটি স্ট্রিং এ কাজ করতে for/in ব্যবহার করতে পারেন। স্ট্রিংটি তার অক্ষরগুলির একটি তালিকার মতো কাজ করে, তাই for ch in s: print(ch) একটি স্ট্রিং-এ সমস্ত অক্ষর প্রিন্ট করে।

পরিসর

রেঞ্জ(n) ফাংশনটি 0, 1, ... n-1 নম্বরগুলি প্রদান করে এবং রেঞ্জ(a, b) a, a+1, ... b-1 প্রদান করে -- পর্যন্ত কিন্তু শেষ সংখ্যাটি অন্তর্ভুক্ত করে না . for-loop এবং range() ফাংশনের সংমিশ্রণ আপনাকে লুপের জন্য একটি ঐতিহ্যগত সংখ্যা তৈরি করতে দেয়:

  ## print the numbers from 0 through 99
  for i in range(100):
    print(i)

একটি বৈকল্পিক xrange() রয়েছে যা পারফরম্যান্স সংবেদনশীল ক্ষেত্রে পুরো তালিকা তৈরির খরচ এড়িয়ে যায় (পাইথন 3-এ, range() এর পারফরম্যান্সের ভাল আচরণ থাকবে এবং আপনি xrange()) সম্পর্কে ভুলে যেতে পারেন।

যখন লুপ

Python-এর স্ট্যান্ডার্ড while-loopও রয়েছে এবং *break* এবং *continue* স্টেটমেন্টগুলি C++ এবং Java এর মতই কাজ করে, যা ভেতরের লুপের গতিপথ পরিবর্তন করে। উপরের জন্য/ইন লুপগুলি একটি তালিকার প্রতিটি উপাদানের উপর পুনরাবৃত্তি করার সাধারণ ক্ষেত্রে সমাধান করে, কিন্তু যখন লুপ আপনাকে সূচক সংখ্যাগুলির উপর সম্পূর্ণ নিয়ন্ত্রণ দেয়। এখানে একটি while লুপ যা একটি তালিকার প্রতিটি 3য় উপাদান অ্যাক্সেস করে:

  ## Access every 3rd element in a list
  i = 0
  while i < len(a):
    print(a[i])
    i = i + 3

তালিকা পদ্ধতি

এখানে কিছু অন্যান্য সাধারণ তালিকা পদ্ধতি আছে।

  • list.append(elem) -- তালিকার শেষে একটি একক উপাদান যোগ করে। সাধারণ ত্রুটি: নতুন তালিকা ফেরত দেয় না, শুধু মূল সংশোধন করে।
  • list.insert(index, elem) -- প্রদত্ত সূচকে উপাদান সন্নিবেশ করায়, উপাদানগুলিকে ডানদিকে স্থানান্তরিত করে।
  • list.extend(list2) তালিকার শেষে list2 এ উপাদান যোগ করে। একটি তালিকায় + বা += ব্যবহার করা প্রসারিত() ব্যবহারের অনুরূপ।
  • list.index(elem) -- তালিকার শুরু থেকে প্রদত্ত উপাদান অনুসন্ধান করে এবং এর সূচী প্রদান করে। যদি উপাদানটি উপস্থিত না হয় তবে একটি ValueError নিক্ষেপ করে (একটি ValueError ছাড়া চেক করতে "in" ব্যবহার করুন)।
  • list.remove(elem) -- প্রদত্ত এলিমেন্টের প্রথম উদাহরণের জন্য অনুসন্ধান করে এবং এটিকে সরিয়ে দেয় (উপস্থিত না থাকলে ValueError ফেলে)
  • list.sort() -- জায়গায় তালিকা সাজায় (এটি ফেরত দেয় না)। (পরে দেখানো sorted() ফাংশন পছন্দ করা হয়।)
  • list.reverse() -- জায়গায় তালিকাটি বিপরীত করে (এটি ফেরত দেয় না)
  • list.pop(index) -- প্রদত্ত সূচকে উপাদানটিকে সরিয়ে দেয় এবং ফেরত দেয়। সূচী বাদ দেওয়া হলে ডানদিকের উপাদানটি প্রদান করে (মোটামুটি পরিশিষ্ট() এর বিপরীত)।

লক্ষ্য করুন যে এগুলি একটি তালিকা বস্তুর *পদ্ধতি*, যখন len() হল একটি ফাংশন যা একটি যুক্তি হিসাবে তালিকা (বা স্ট্রিং বা যাই হোক না কেন) নেয়।

  list = ['larry', 'curly', 'moe']
  list.append('shemp')         ## append elem at end
  list.insert(0, 'xxx')        ## insert elem at index 0
  list.extend(['yyy', 'zzz'])  ## add list of elems at end
  print(list)  ## ['xxx', 'larry', 'curly', 'moe', 'shemp', 'yyy', 'zzz']
  print(list.index('curly'))    ## 2

  list.remove('curly')         ## search and remove that element
  list.pop(1)                  ## removes and returns 'larry'
  print(list)  ## ['xxx', 'moe', 'shemp', 'yyy', 'zzz']

সাধারণ ত্রুটি: মনে রাখবেন যে উপরের পদ্ধতিগুলি পরিবর্তিত তালিকাটি *ফেরত* করে না, তারা কেবল মূল তালিকাটি পরিবর্তন করে।

  list = [1, 2, 3]
  print(list.append(4))   ## NO, does not work, append() returns None
  ## Correct pattern:
  list.append(4)
  print(list)  ## [1, 2, 3, 4]

তালিকা তৈরি করুন

একটি সাধারণ প্যাটার্ন হল একটি তালিকাকে খালি তালিকা হিসাবে শুরু করা [], তারপর এটিতে উপাদান যুক্ত করতে append() বা extend() ব্যবহার করুন:

  list = []          ## Start as the empty list
  list.append('a')   ## Use append() to add elements
  list.append('b')

স্লাইস তালিকা

স্লাইসগুলি স্ট্রিংগুলির মতোই তালিকাগুলিতে কাজ করে এবং তালিকার উপ-অংশগুলি পরিবর্তন করতেও ব্যবহার করা যেতে পারে।

  list = ['a', 'b', 'c', 'd']
  print(list[1:-1])   ## ['b', 'c']
  list[0:2] = 'z'    ## replace ['a', 'b'] with ['z']
  print(list)         ## ['z', 'c', 'd']

ব্যায়াম: list1.py

এই বিভাগে উপাদান অনুশীলন করার জন্য, list1.py- এর সমস্যাগুলি চেষ্টা করুন যেগুলি বাছাই ব্যবহার করে না ( বেসিক অনুশীলনে )।