Python Language Tutorial Part- 3 (Data Structure in List)

Today, I took a new part of python. In this Part, we will see the usage of the list and how can use multiple ways for arranging data on the list. All the information and points are interesting in this part of the tutorial.
 
I have already told you.
Download Python Language Tutorials and give star on GitHub if those files are helpful for you.
 
In this article you will understand the following:
  • List
  • Stack
  • Queue
The concepts you may have known theoretically, but today I’ll explain how we can implement these concepts in python with simple code implementation.
 
List
 
List is an important data type in Python. It stores much data. In Python, List has many functions that make easy and simple for handling list in python.
  • list.append(X): Add an item to the end of the list.
  • list.extend(L): Extend the list by appending all the items in the given list.
  • list.insert(I, X): Insert an item at a given position.
  • list.remove(X): Remove the first item from the list.
  • list.pop([I]) : Remove the item at the given position in the list.
  • list.clear(): Remove all items from the list.
  • list.index(X): The index in the list of the first item whose value is X.
  • list.count(X): The number of times X appears on the list.
  • list.sort(): Sort the items of the list in place.
  • list.reverse(): Reverse the elements of the list in place.
  • list.copy() : A copy of the list.
Now see the example below:
 
Example 1:
  1. #!/usr/bin/python  
  2. # -*- coding: utf-8 -*-  
  3. a = [  
  4.     1,  
  5.     4,  
  6.     3,  
  7.     6,  
  8.     3,  
  9.     5,  
  10.     6,  
  11.     74,  
  12.     6,  
  13.     4,  
  14.     3,  
  15.     6,  
  16.     2,  
  17.     8,  
  18.     ]  
  19.   
  20. # Number of times values appear on the list.  
  21.   
  22. print (  
  23.     'a.count(3)=',  
  24.     a.count(3),  
  25.     'a.count(6)=',  
  26.     a.count(6),  
  27.     "a.count('x')=",  
  28.     a.count('x'),  
  29.     )  
  30.   
  31. # Insert an item at a given position  
  32.   
  33. a.insert(2, -1)  
  34. print ('a.insert(2, -1)=', a)  
  35.   
  36. # Add an item to the end of the list  
  37.   
  38. a.append(3)  
  39. print ('a.append(3)=', a)  
  40.   
  41. # the index in the list of the first item. It is an error if there is no such item  
  42.   
  43. print ('a.index(3)=', a.index(3))  
  44.   
  45. # Remove the first item from the list... It is an error if there is no such item  
  46.   
  47. a.remove(3)  
  48. print ('a.remove(3)=', a)  
  49.   
  50. # Reverse the elements of the list  
  51.   
  52. a.reverse()  
  53. print ('a.reverse()=', a)  
  54.   
  55. # Sort the items of the list  
  56.   
  57. a.sort()  
  58. print ('a.sort()=', a)  
  59.   
  60. # removes and returns the last item in the list.  
  61.   
  62. print ('a.pop()=', a.pop())  
  63.     
Output: 
 
a.count(3)= 3 a.count(6)= 4 a.count('x')= 0
a.insert(2, -1)= [1, 4, -1, 3, 6, 3, 5, 6, 74, 6, 4, 3, 6, 2, 8]
a.append(3)= [1, 4, -1, 3, 6, 3, 5, 6, 74, 6, 4, 3, 6, 2, 8, 3]
a.index(3)= 3
a.remove(3)= [1, 4, -1, 6, 3, 5, 6, 74, 6, 4, 3, 6, 2, 8, 3]
a.reverse()= [3, 8, 2, 6, 3, 4, 6, 74, 6, 5, 3, 6, -1, 4, 1]
a.sort()= [-1, 1, 2, 3, 3, 3, 4, 4, 5, 6, 6, 6, 6, 8, 74]
a.pop()= 74
 
Example 2:
 
In this example you will see how to calculate Square of each list value:
  1. square=[(x, x**2for x in range(6)]  
  2. #print square of each value  
  3. print(square)  
  4. square_list = [x**2 for x in range(15)]  
  5. #print square of each value  
  6. print(square_list)  
Output: 
 
[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196]
 
Example 3:
 
In this example, you will see how to combine two lists.
  1. comp_list = [(x, y) for x in [123]  
  2.     for y in [456]  
  3.     if x != y  
  4. ]  
  5. print(comp_list)  
  6. combs = []  
  7. for x in [123, ]:  
  8.     for y in [456]:  
  9.     if x != y:  
  10.     a.combs.append((x, y))  
  11. print(combs) 
Output: 
 
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
[(1, 4), (1, 5), (1, 6)]
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6)]
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
 
Example 4:
 
In this example, you will see how to get elements in List.
  1. vec = [[1,2,3], [4,5,6], [7,8,9]]  
  2. elem=[num for elem in vec for num in elem]  
  3. print(elem)  
Output:
 
[1, 2, 3, 4, 5, 6, 7, 8, 9]
 
Example 5:
 
In this example you will see use of ‘pi’:
  1. #!/usr/bin/python  
  2. # -*- coding: utf-8 -*-  
  3. from math import pi  
  4. PI = [str(round(pi, i)) for i in range(110)]  
  5. print PI  
Output: 
 
['3.1', '3.14', '3.142', '3.1416', '3.14159', '3.141593', '3.1415927', '3.14159265', '3.141592654']
 
Example 6:
 
In this example, you will see matrix transpose.
  1. matrix = [  
  2.     [1234],  
  3.     [5678],  
  4.     [9101112],  
  5. ]  
  6. print(matrix)  
  7. transpose_mat1 = [  
  8.     [row[i]  
  9.         for row in matrix  
  10.     ]  
  11.     for i in range(4)  
  12. ]  
  13. print(transpose_mat1)  
  14. transposed_mat2 = []  
  15. for i in range(4): #the following 3 lines implement the nested listcomp  
  16.     rows = []  
  17. for row in matrix:  
  18.     rows.append(row[i])  
  19. transposed_mat2.append(rows)  
  20. print(transposed_mat2) 
Output: 
 
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
 
Stack
 
Stack works on the (“last-in, first-out”) concept. In List, the methods can be easily used for making stack concept on List. Add an item to the top of the stack, use append(). To retrieve an item from the top of the stack, use pop() without an explicit index.
 
In Stack we’ll use the following two methods:
  1. append()
  2. pop()
Example:
  1. #!/usr/bin/python  
  2. # -*- coding: utf-8 -*-  
  3. stack = [123445]  
  4.   
  5. # Add an item to the top of the stack  
  6.   
  7. stack.append(23)  
  8. print ('stack.append(23)=', stack)  
  9.   
  10. # Add an item to the top of the stack  
  11.   
  12. stack.append(73)  
  13. print ('stack.append(73)=', stack)  
  14.   
  15. # To retrieve an item from the top of the stack  
  16.   
  17. stack.pop()  
  18.   
  19. print ('stack.pop()=', stack)  
  20.   
  21. # To retrieve an item from the index 'X' of the stack  
  22.   
  23. stack.pop(1)  
  24. print ('stack.pop(1)=', stack)  
  25.   
  26. # To retrieve an item from the top of the stack  
  27.   
  28. stack.pop()  
  29. print ('stack.pop()=', stack)  
Output: 
 
stack.append(23)= [12, 34, 45, 23]
stack.append(73)= [12, 34, 45, 23, 73]
stack.pop()= [12, 34, 45, 23]
stack.pop(1)= [12, 45, 23]
stack.pop()= [12, 45]
 
Queue
 
The queue works on the (“first-in, first-out”) concept. The list is not efficient for this purpose. Because pop() method retrieves the top of the stack value. In Queue we always retrieve data from the beginning of the list. To implement a queue in the list we use collections.deque which is used for pop data from the beginning of the list.
 
Example:
  1. #!/usr/bin/python  
  2.   
  3. #- * -coding: utf - 8 - * -  
  4. from collections  
  5. import deque  
  6. queue = deque(['Gmail''Yahoo''Outlook'])  
  7. print queue  
  8.   
  9. # Add an item in the queue  
  10.   
  11. queue.append('Rediff')  
  12. print('queue.append("Rediff") =', queue)  
  13.   
  14. # To retrieve an item from Beginning in the queue  
  15.   
  16. queue.popleft()  
  17. print('queue.popleft() =', queue)  
  18.   
  19. # To retrieve an item from Beginning in the queue  
  20.   
  21. queue.popleft()  
  22. print('queue.popleft() =', queue)  
Output:
 
deque(['Gmail', 'Yahoo', 'Outlook'])
queue.append("Rediff") = deque(['Gmail', 'Yahoo', 'Outlook', 'Rediff'])
queue.popleft() = deque(['Yahoo', 'Outlook', 'Rediff'])
queue.popleft() = deque(['Outlook', 'Rediff'])