List in Python

Python Language এ List কি?

List in Python
List in Python

List শব্দের বাংলা অর্থ তালিকা। Python List হচ্ছে কতগুলো আইটেমের একটি তালিকা । যেখানে প্রত্যেকটি Element/Item এর জন্য একটি number assign করা হয় যাকে index বা position বলা যায়। List অনেকটা C, C++, Java এবং PHP এর numerical array এর মতো। List এ প্রথম index zero (0), তারপর 1 এবং এরপর ক্রমিক আকারে বাড়তে থাকে। যার element সমূহ পরিবর্তনযোগ্য (Changeable)। একটি লিস্টের আইটেমগুলো বিভিন্ন টাইপের হতে পারে ।

পাইথনে কিভাবে List তৈরী করবেন ?

পাইথনে List তৈরী করা খুবই সহজ। দুটো স্কয়ার ব্র্যাকেট [ ] এবং এর মধ্যে কমা দিয়ে আলাদা আলাদা Element/Item যুক্ত করে দিলেই List তৈরী হয়ে যাবে। চলুন একসাথে কয়েকটি List তৈরী করে ফেলি :

# empty list
my_list = []

# list of integers
my_list = [1, 2, 3]

# list with mixed datatypes
my_list = [1, "Hello", 3.4]

এমনকি আপনি চাইলে একটি Python List এর ভিতরে আরো কয়েকটি List তৈরী করে ফেলতে পারেন। যেটাকে আমরা বলতে পারি Nested List . নিচের উদাহরণ লক্ষ্য করুন :

# nested list
my_list = ["mouse", [8, 4, 6], ['a']]

Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django

কিভাবে List এর Element গুলোতে access করবেন?

List এর Element বা Item গুলোতে access করার জন্য আপনি index বা position ব্যবহার করতে পারেন। নিচের উদাহরণে লক্ষ্য করুন :

my_list = ['Hasib','Razib','Rakib','Khalid','Imran']
# Output: Hasib
print(my_list[0])

# Output: Rakib
print(my_list[2])

# Output: Imran
print(my_list[4])

# Error! Only integer can be used for indexing
# my_list[4.0]

# Nested List
n_list = ["Happy", [2,0,1,5]]

# Nested indexing

# Output: a
print(n_list[0][1])    

# Output: 5
print(n_list[1][3])

উল্লেখ্য : Python List এর index সব সময় integer হতে হবে।

Negative indexing (বিপরীত দিক থেকে indexing)

Python List এ আপনি চাইলে negative indexing (বিপরীত দিক থেকে indexing) ও করতে পারেন। অর্থাৎ , index (-1) এর অর্থ দাঁড়ায় From Last One (List এর পিছনের দিক থেকে প্রথম value), এবং index (-2) এর অর্থ দাঁড়ায় From Last Two(List এর পিছনের দিক থেকে দ্বিতীয় value). ঠিক এইভাবে -3 এবং -4 ক্রম অনুসারে। নিচের উদাহরণ লক্ষ্য করুন :

my_list = ['Parvez','Ripon','Omran','Billal','Emran']

# Output: Emran
print(my_list[-1])

# Output: Parvez
print(my_list[-5])

Python List কে Slice করা ?

আপনি চাইলে পাইথনের Slicing Operator (:) দিয়ে List এর নির্দিষ্ট অংশ Slicing করে নিতে পারেন। নিচের উদাহরণ দেখুন :

my_list = ['Parvez','Razib','Omran','Galib','Rakib','Abul','Masud','Imtiaz','Zafar Iqbal']
# elements ['Omran', 'Galib', 'Rakib']
print(my_list[2:5])

# elements beginning to 4th
#['Parvez', 'Razib', 'Omran', 'Galib']
print(my_list[:-5])

# elements 6th to end
#['Abul', 'Masud', 'Imtiaz', 'Zafar Iqbal']
print(my_list[5:])

# elements beginning to end
print(my_list[:])

Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django

List Unpacking

List Unpacking এর মাধ্যমে একটি List (বা যেকোনো iterable) মধ্যে থাকা প্রত্যেকটি value কে আলাদা আলাদা নতুন Variable এ অ্যাসাইন করতে পারেন এক লাইন কোড লিখেই। নিচের উদাহরণ দেখুন:

>>> names=["Plabon","Shahriar","Bijon"]
>>> a,b,c=names
>>> print(a)
Plabon
>>> print(b)
Shahriar
>>> print(c)
Bijon
>>> 

যদি এমন হয় যে একটি List এর মধ্যে অবস্থিত অসংখ্য ভ্যালু এর মধ্যে অল্প কিছু আলাদা আলাদা ভ্যারিয়েবলে জমা রাখতে চান, এবং বাকি গুলো একটা নির্দিষ্ট variable এ রাখতে চান। তখন নিচের মত করে যেকোনো ভ্যারিয়েবলের সামনে * যুক্ত করে অবশিষ্ট যেকোনো সংখ্যক ভ্যালুকে এর মধ্যে জমা রাখতে পারবেন।

>>> a, b, *c, d = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print(a)
1
>>> print (b)
2
>>> print (c)
[3, 4, 5, 6, 7, 8]
>>> print (d)
9
>>> 

ব্যাখ্যা: এখানে 1 জমা হচ্ছে a এর মধ্যে, 2 জমা হচ্ছে b এর মধ্যে কিন্তু এরপর থেকে বাকিগুলো জমা হচ্ছে c এর মধ্যে। আর ডান পাশের ইটারেবলের শেষ ভ্যালু জমা হচ্ছে বাম পাশের শেষ ভ্যারিয়েবল d এর মধ্যে।

লিস্টে পুরাতন আইটেম Update বা নতুন আইটেম add করা :

# mistake values
odd = [2, 4, 6, 8]

# change the 1st item    
odd[0] = 1            

# Output: [1, 4, 6, 8]
print(odd)

# change 2nd to 4th items
odd[1:4] = [3, 5, 7]  

# Output: [1, 3, 5, 7]
print(odd)                   

পাইথন লিস্টে একটি Item যোগ করার জন্য আপনি append Method ব্যবহার করতে পারেন, আবার একাধিক Item যোগ করার জন্য extend Method ব্যবহার করতে পারেন।

odd = [1, 3, 5]

odd.append(7)

# Output: [1, 3, 5, 7]
print(odd)

odd.extend([9, 11, 13])

# Output: [1, 3, 5, 7, 9, 11, 13]
print(odd)

এছাড়াও আপনি দুইটি list কে combine করার জন্য plus (+) operator ব্যবহার করতে পারেন, যেটাকে আবার concatenation ও বলা হয়ে থাকে।

odd = [1, 3, 5]

# Output: [1, 3, 5, 9, 7, 5]
print(odd + [9, 7, 5])

একইভাবে লিস্টের মধ্যে Item গুলোকে repeat করার জন্য Multiplication (*) operator ব্যবহার করতে পারেন।

#Output: ["re", "re", "re"]
print(["re"] * 3)

পাইথনে লিস্টে আপনি যদি একটি নির্দিষ্ট location এ কিছু add করতে চান , সেক্ষেত্রে আপনাকে insert Method ব্যবহার করতে হবে, লক্ষ্য করুন :

odd = [1, 9]
odd.insert(1,3)

# Output: [1, 3, 9] 
print(odd)

odd[2:2] = [5, 7]

# Output: [1, 3, 5, 7, 9]
print(odd)

Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django

List থেকে কোনো কিছু remove বা Delete করা

পাইথনে লিস্টের এক বা একাধিক এমনকি পুরো Python List ডিলিট বা রিমোভ করার জন্য আপনি del কীওয়ার্ডটি ব্যবহার করতে পারেন। নিচের উদাহরণ দেখুন :

my_list = ['p','r','o','b','l','e','m']

# delete one item
del my_list[2]

# Output: ['p', 'r', 'b', 'l', 'e', 'm']     
print(my_list)

# delete multiple items
del my_list[1:5]  

# Output: ['p', 'm']
print(my_list)

# delete entire list
del my_list       

# Error: List not defined
print(my_list)

পাইথনে লিস্টের Item ধরে remove করতে চাইলে আপনাকে remove method ব্যবহার করতে হবে, একইভাবে Item এর key ধরে remove করতে চাইলে আপনাকে pop Method ব্যবহার করতে হবে। আর লিস্টকে খালি করে দেওয়ার জন্য আপনি clear Method ব্যবহার করতে পারেন। নিচের উদাহরণ দেখুন :

my_list = ['p','r','o','b','l','e','m']
my_list.remove('p')

# Output: ['r', 'o', 'b', 'l', 'e', 'm']
print(my_list)

# Output: 'o'
print(my_list.pop(1))

# Output: ['r', 'b', 'l', 'e', 'm']
print(my_list)

# Output: 'm'
print(my_list.pop())

# Output: ['r', 'b', 'l', 'e']
print(my_list)

my_list.clear()

# Output: []
print(my_list)

এছাড়াও একটি empty List assign করার মাধমেও আপনি লিস্টের Item রিমুভ করতে পারেন।

>>> my_list = ['p','r','o','b','l','e','m']
>>> my_list[2:3] = []
>>> my_list
['p', 'r', 'b', 'l', 'e', 'm']
>>> my_list[2:5] = []
>>> my_list
['p', 'r', 'm']

লিস্টের কোনো Item এর index বের করার জন্য আপনি index Method ব্যবহার করতে পারেন। অবশ্য index Method আপনাকে লিস্টের First Matched Item টি প্রদর্শিত করবে। একইভাবে লিস্টের Item সংখ্যা count করার জন্য count Method ব্যবহার করতে পারেন। লিস্টকে Ascending আকারে প্রদর্শন করার জন্য sort Method এবং Reverse অর্ডারে দেখানোর জন্য reverse Method ব্যবহার করতে পারেন। আর লিস্টকে copy করার জন্য copy Method ব্যবহার করতে পারেন। সবগুলো উদাহরণ নিচে দেওয়া হলো :

my_list = [3, 8, 1, 6, 0, 8, 4]

# Output: 1
print(my_list.index(8))

# Output: 2
print(my_list.count(8))

my_list.sort()

# Output: [0, 1, 3, 4, 6, 8, 8]
print(my_list)

my_list.reverse()

# Output: [8, 8, 6, 4, 3, 1, 0]
print(my_list)

my_list.copy()

Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django

List এর কিছু Built-in Function List

List নিয়ে বিভিন্ন কাজ করার জন্য সাধারণ কিছু function নিচে সেগুলোর বিস্তারিত দেওয়া হলো।

Built-in Functions with List
Function Description
all() List এর সব element যখন true, তখন এটি true return করবে।
any() List এর যেকোনো element যখন true, তখন এটি true return করবে।
len() List এর Length return করবে
list() tuple, string, set, dictionary এই ধরণের iterable data type কে List এ convert করবে।
max() List এর max (বড়) Item টি return করবে।
min() List এর সবচেয়ে min (ছোট) Item টি return করবে।
sorted() নতুন একটি sorted list return করবে।
sum() লিস্টের সব Element এর যোগফল দেখাবে।

চলুন নিচে সবগুলোর একটা করে উদাহরণ দেখা যাক :


>>> my_list=[2,1,3,6,5,8,7,9,10,21]
>>> len(my_list)
10
>>> max(my_list)
21
>>> min(my_list)
1
>>> sum(my_list)
72
>>> sorted(my_list)
[1, 2, 3, 5, 6, 7, 8, 9, 10, 21]
>>> any(my_list)
True
>>> all(my_list)
True
>>> 

List এ for loop এর ব্যবহার :

for fruit in ['apple','banana','mango']:
    print("I like",fruit)

List এ কোনো Item আছে কিনা তা যাচাই করা :

my_list = ['p','r','o','b','l','e','m']

# Output: True
print('p' in my_list)

# Output: False
print('a' in my_list)

# Output: True
print('c' not in my_list)

List এর প্রত্যেকটি element এর সাথে power যোগ করে নতুন List তৈরির আরো একটি উদাহরণ :

pow2 = [2 ** x for x in range(10)]

# Output: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
print(pow2)

Python List Comprehension

ধরুন আমরা “human” word টির letter গুলোকে আলাদা করে একটি List এর Item হিসেবে রাখবো। তাহলে কি করতে হবে? সহজ উত্তর for loop ব্যবহার করলেই হয়, তাহলে চলুন for loop দিয়ে কাজটি করা যাক :

h_letters = []

for letter in 'human':
    h_letters.append(letter)

print(h_letters)

উপরের কোডটি রান করলে নিচের মতো ফলাফল আসবে :

['h','u','m','a','n']

আর Python List Comprehension ব্যবহার করে , আপনি এই কাজটি আরো সহজেই করতে পারতেন। আর মূলতঃ পাইথনে List Comprehension হচ্ছে existing List এর উপর ভিত্তি করে আরো সহজে List তৈরী করার উপায়। চলুন একটি উদাহরণ দিয়ে ব্যাপারটা বুঝা যাক :

h_letters = [ letter for letter in 'human' ]
print( h_letters)

উপরের কোডটি রান করলে নিচের মতো ফলাফল আসবে :

['h', 'u', 'm', 'a', 'n']

List Comprehension এর Syntax

[expression for item in list]

ব্যাপারটা টা ঠিক নিচের image এর মতোই :

List Comprehension Syntax
List Comprehension Syntax

List Comprehension এর মধ্যে if Condition add করা

List Comprehension এর মধ্যে আপনি চাইলে Condition ও add করে দিতে পারেন , নিচের উদাহরণ দেখুন :

number_list = [ x for x in range(20) if x % 2 == 0]
print(number_list)

উপরের কোডটি রান করলে নিচের মতো ফলাফল আসবে :

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django

List Comprehension এর মধ্যে Nested if Condition add করা

List Comprehension এর মধ্যে আপনি চাইলে nested if Condition ও add করে দিতে পারেন , নিচের উদাহরণ দেখুন :

num_list = [y for y in range(100) if y % 2 == 0 if y % 5 == 0]
print(num_list)

উপরের কোডটি রান করলে নিচের মতো ফলাফল আসবে :

[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

List Comprehension এর মধ্যে if else Condition add করা

List Comprehension এর মধ্যে আপনি চাইলে if else Condition ও add করে দিতে পারেন , নিচের উদাহরণ দেখুন :

obj = ["Even" if i%2==0 else "Odd" for i in range(10)]
print(obj)

উপরের কোডটি রান করলে নিচের মতো ফলাফল আসবে :

['Even', 'Odd', 'Even', 'Odd', 'Even', 'Odd', 'Even', 'Odd', 'Even', 'Odd']

আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ১৫ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller, Amarbebsha Ltd সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ডেটা সাইন্স, মেশিন লার্নিং, বিগ ডেটা, ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। এছাড়াও বাংলাদেশের ১৮৫ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ১২০ এরও অধিক ছাত্র আমার হাতে জেন্ড সার্টিফাইড ইঞ্জিনিয়ার হয়েছেন। বর্তমানে w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -8.2 Engineering, Laravel Mastering Course with ReactJS, Python Beginning To Advance with Blockchain, Machine Learning and Data Science, Professional WordPress Plugin Development Beginning to Advance কোর্স করাই। আর অবসর সময়ে w3programmers.com এ ওয়েব টেকনোলজি নিয়ে লেখালেখি করি।

Leave a Reply