GOEDUHUB Online Courses || Last Batch Student's Projects || COVID-19 Projects(AI-ML) || Universities  ||  Placement Preparation  Subscribe our youtube channel
+91-7976731765 Free Online Tutorials || AI || ML || NLP ||  OpenCV || Python || DBMS || OOPs || DSA || Java || Linux/Unix ||  C Programming
0 like 0 dislike
32 views
in Python Programming by Goeduhub's Expert (8.1k points)

1 Answer

0 like 0 dislike
by Goeduhub's Expert (8.1k points)
 
Best answer

Accessing values in nested list-

Starting with a three-dimensional list:
alist = [[[1,2],[3,4]], [[5,6,7],[8,9,10], [12, 13, 14]]]

 Accessing items in the list:

print(alist[0][0][1])

#2
#Accesses second element in the first list in the first list
print(alist[1][1][2])
#10
#Accesses the third element in the second list in the second list
Performing support operations:
alist[0][0].append(11)
print(alist[0][0][2])
#11
#Appends 11 to the end of the first list in the first list
Using nested for loops to print the list:
for row in alist:  #One way to loop through nested lists
   for col in row:
      print(col)
#[1, 2, 11]
#[3, 4]
#[5, 6, 7]
#[8, 9, 10]
#[12, 13, 14]
Note- that this operation can be used in a list comprehension or even as a generator to produce efficiencies, 
e.g.: [col for row in alist for col in row]
#[[1, 2, 11], [3, 4], [5, 6, 7], [8, 9, 10], [12, 13, 14]]
Not all items in the outer lists have to be lists themselves:
alist[1].insert(2, 15)
#Inserts 15 into the third position in the second list
Another way to use nested for loops. The other way is better but I've needed to use this on occasion:
for row in range(len(alist)): #A less Pythonic way to loop through lists
   for col in range(len(alist[row])):
      print(alist[row][col])
#[1, 2, 11]
#[3, 4]
#[5, 6, 7]
#[8, 9, 10]
#15
#[12, 13, 14]

Using slices in nested list:

print(alist[1][1:])

#[[8, 9, 10], 15, [12, 13, 14]]

#Slices still work

The final list:

print(alist)

#[[[1, 2, 11], [3, 4]], [[5, 6, 7], [8, 9, 10], 15, [12, 13, 14]]] 

Initializing a List to a Fixed Number of Elements-

For immutable elements (e.g. None, string literals etc.):
my_list = [None] * 10
my_list = ['test'] * 10
For mutable elements, the same construct will result in all elements of the list referring to the same object, for
example, for a set:
>>> my_list=[{1}] * 10
[{1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}]
>>> my_list[0].add(2)
>>> print(my_list)
[{1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}]
Instead, to initialize the list with a fixed number of different mutable objects, use:
my_list=[{1} for _ in range(10)]

Related questions

0 like 0 dislike
1 answer 34 views
0 like 0 dislike
4 answers 270 views
1 like 0 dislike
6 answers 475 views
asked Oct 30, 2019 in Python Programming by Goeduhub Goeduhub's Expert (8.1k points)
0 like 0 dislike
1 answer 103 views

 Goeduhub:

About Us | Contact Us  © goeduhub.com Social::   |  | 
 Placements:   List of companies | Logical Reasoning Questions | Quantitative Aptitude Questions | General English Questions | Technical-MCQ and Interview Questions
 Important Lists: List of NITsList of IITsList of Exams After Graduation | List of Engineering Entrance Examinations (UG/PG)College ReviewsCollege Fest, Events & WorkshopsKnowledge ShareTrainees/Interns After 15-04-2020
Exams & Cutoffs: JEE Main | JEE Advanced | GATE | IES | ISROList of PSUs || Cutoff-GATECutoff_IIT-JEECS-ScopeECE ScopeEE-Scope
 Download Previous Year Papers For:  GATE | IES | RAJASTHAN TECHNICAL UNIVERSITY (RTU-Kota)RPSC Technical Exams | ISRO
...