Implement the __getitem__ method to work with positive and negative indices. For example: > W = L1(Node(10, Node(20, Node(30)))) > print W [ 10, 20, 30 ] > print W[0], W[1], W[2] > print W[-1], W[-2], W[-3] 10 20 30 30 20 10 Be aware of cases where the index exceeds the size of the list, either positive or negative. In these cases you have to generate an assertion error. In the above example, W[3] and W[-4] should raise an AssertionError Complete the Code: class L(object):         def __init__ (self, first_node=None):             assert first_node is None or isinstance(first_node,Node), "first must be Node, not %s"%(type(first_node))             self.first_node = first_node                      def __len__(self):             k = self.first_node             if k is None:                 return 0             i=1             while k.next is not None:                 i+=1                 k = k.next             return i         def __repr__ (self):             if self.first_node is None:                 return "[]"             s = "[ %s"%self.first_node             k=self.first_node             while (k.next is not None):                 s += ", %s"%k.next                 k = k.next             return s+" ]" def L1(*args,**kwargs):          class L1_class(L):                  def __getitem__(self, idx):                          return <... Your Code Here ...>                  return L1_class(*args,**kwargs)

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Implement the __getitem__ method to work with positive and negative indices. For example:

> W = L1(Node(10, Node(20, Node(30))))

> print W

[ 10, 20, 30 ]

> print W[0], W[1], W[2]

> print W[-1], W[-2], W[-3]

10 20 30

30 20 10

Be aware of cases where the index exceeds the size of the list, either positive or negative. In these cases you have to generate an assertion error.

In the above example, W[3] and W[-4] should raise an AssertionError

Complete the Code:

class L(object):
        def __init__ (self, first_node=None):
            assert first_node is None or isinstance(first_node,Node), "first must be Node, not %s"%(type(first_node))
            self.first_node = first_node
            

        def __len__(self):
            k = self.first_node
            if k is None:
                return 0
            i=1
            while k.next is not None:
                i+=1
                k = k.next
            return i

        def __repr__ (self):
            if self.first_node is None:
                return "[]"

            s = "[ %s"%self.first_node
            k=self.first_node
            while (k.next is not None):
                s += ", %s"%k.next
                k = k.next

            return s+" ]"

def L1(*args,**kwargs):
    
    class L1_class(L):
        
        def __getitem__(self, idx):
            
            return <... Your Code Here ...>
            
    return L1_class(*args,**kwargs)

 

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 4 steps with 3 images

Blurred answer
Knowledge Booster
Concept of Threads
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education