Friday, December 27, 2024

Python Lists Creating Properties Items Length Data Types Constructor Collections syntax

  1. Python Lists

    • Lists are used to store multiple items in a single variable.
    • One of the four built-in data types in Python used to store collections of data (the others are Tuple, Set, and Dictionary).
  2. Creating Lists

    • Lists are created using square brackets ([]).
    • Example:
      thislist = ["apple", "banana", "cherry"]
      print(thislist)
      
  3. List Properties

    • Ordered: Items have a defined order, which doesn’t change unless explicitly altered.
    • Changeable: You can add, remove, and modify items after creation.
    • Allow Duplicates: Lists can have items with duplicate values.
  4. List Items

    • Items are indexed: The first item has index [0], the second [1], and so on.
    • Example of duplicate values:
      thislist = ["apple", "banana", "cherry", "apple", "cherry"]
      print(thislist)
      
  5. List Length

    • Use len() to determine the number of items in a list.
    • Example:
      thislist = ["apple", "banana", "cherry"]
      print(len(thislist))
      
  6. List Items - Data Types

    • List items can be of any data type (string, integer, boolean, etc.).
    • A list can even contain mixed data types.
    • Examples:
      list1 = ["apple", "banana", "cherry"]
      list2 = [1, 5, 7, 9, 3]
      list3 = [True, False, False]
      list4 = ["abc", 34, True, 40, "male"]
      
  7. Type of a List

    • From Python’s perspective, lists are objects of the data type 'list'.
    • Example:
      mylist = ["apple", "banana", "cherry"]
      print(type(mylist))
      
  8. The list() Constructor

    • You can create a list using the list() constructor.
    • Example:
      thislist = list(("apple", "banana", "cherry"))  # note the double round brackets
      print(thislist)
      
  9. Python Collections (Arrays)

    • List: Ordered and changeable. Allows duplicates.
    • Tuple: Ordered and unchangeable. Allows duplicates.
    • Set: Unordered, unchangeable*, unindexed. No duplicates.
    • Dictionary: Ordered** and changeable. No duplicates.
    • Notes:
      • Set items are unchangeable, but you can add/remove items.
      • Dictionaries are ordered as of Python 3.7.
  10. Choosing a Collection Type

    • Understanding properties of different types is crucial for efficiency, security, and meaning retention.
  11. Exercise Example

    • What will be the result of the syntax:
      mylist = ['apple', 'banana', 'cherry']
      print(mylist[1])
      
    • Answer: banana.

 Python List Items:

Access Items by Index

  • Indexed access: Use index numbers to access list items. Index starts at 0.
    thislist = ["apple", "banana", "cherry"]
    print(thislist[1])  # Output: "banana"
    
  • Note: The first item has index 0.

Negative Indexing

  • Access from the end: Negative indexing starts at -1 for the last item.
    thislist = ["apple", "banana", "cherry"]
    print(thislist[-1])  # Output: "cherry"
    
  • Examples:
    • -1 = Last item
    • -2 = Second-last item

Range of Indexes

  • Slice a range: Specify start and end indexes for a subset.
    thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
    print(thislist[2:5])  # Output: ['cherry', 'orange', 'kiwi']
    
  • Important Notes:
    • Start index is included, end index is not included.
    • Start defaults to 0 if omitted.
    • End defaults to last item if omitted.

Examples:

# From the beginning to "kiwi" (not included)
print(thislist[:4])  # Output: ['apple', 'banana', 'cherry', 'orange']

# From "cherry" to the end
print(thislist[2:])  # Output: ['cherry', 'orange', 'kiwi', 'melon', 'mango']

Range of Negative Indexes

  • Use negative indexes to slice from the end.
    thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
    print(thislist[-4:-1])  # Output: ['orange', 'kiwi', 'melon']
    
  • Example: Start at -4 ("orange") and end before -1 ("mango").

Check if Item Exists

  • Use the in keyword to check if an item is in a list.
    thislist = ["apple", "banana", "cherry"]
    if "apple" in thislist:
        print("Yes, 'apple' is in the fruits list")
    

Exercise

What will be the result of the following syntax?

mylist = ['apple', 'banana', 'cherry']
print(mylist[-1])

Answer: cherry.

💥 WordPress https://computerclassinsrilanka.wordpress.com

💥 Facebook https://web.facebook.com/itclasssrilanka

Changing Python List Items

1. Change Item Value

  • To change a specific item, use its index:
    thislist = ["apple", "banana", "cherry"]
    thislist[1] = "blackcurrant"
    print(thislist)  # Output: ['apple', 'blackcurrant', 'cherry']
    

2. Change a Range of Item Values

  • Replace a range with a new list:
    thislist = ["apple", "banana", "cherry", "orange", "kiwi", "mango"]
    thislist[1:3] = ["blackcurrant", "watermelon"]
    print(thislist)  # Output: ['apple', 'blackcurrant', 'watermelon', 'orange', 'kiwi', 'mango']
    

3. Insert More Items Than Replaced

  • If the new list has more items than the replaced range, the extra items are inserted, shifting the remaining elements:
    thislist = ["apple", "banana", "cherry"]
    thislist[1:2] = ["blackcurrant", "watermelon"]
    print(thislist)  # Output: ['apple', 'blackcurrant', 'watermelon', 'cherry']
    

4. Insert Fewer Items Than Replaced

  • If the new list has fewer items than the replaced range, the remaining elements shift accordingly:
    thislist = ["apple", "banana", "cherry"]
    thislist[1:3] = ["watermelon"]
    print(thislist)  # Output: ['apple', 'watermelon']
    

5. Insert Items Without Replacing

  • Use the insert() method to add an item at a specific index without replacing existing items:
    thislist = ["apple", "banana", "cherry"]
    thislist.insert(2, "watermelon")
    print(thislist)  # Output: ['apple', 'banana', 'watermelon', 'cherry']
    

Exercise

What will be the result of the following syntax?

mylist = ['apple', 'banana', 'cherry']
mylist[0] = 'kiwi'
print(mylist[1])

Answer: banana.

Explanation:

  • mylist[0] = 'kiwi' replaces "apple" with "kiwi."
  • The list becomes ['kiwi', 'banana', 'cherry'].
  • Printing mylist[1] outputs the second item, which is "banana".

Key Points on Adding Items to Python Lists

1. Append Items

  • Use the append() method to add an item to the end of the list:
    thislist = ["apple", "banana", "cherry"]
    thislist.append("orange")
    print(thislist)  # Output: ['apple', 'banana', 'cherry', 'orange']
    

2. Insert Items

  • Use the insert() method to add an item at a specified index:
    thislist = ["apple", "banana", "cherry"]
    thislist.insert(1, "orange")
    print(thislist)  # Output: ['apple', 'orange', 'banana', 'cherry']
    

3. Extend List

  • Use the extend() method to append elements from another list:
    thislist = ["apple", "banana", "cherry"]
    tropical = ["mango", "pineapple", "papaya"]
    thislist.extend(tropical)
    print(thislist)  # Output: ['apple', 'banana', 'cherry', 'mango', 'pineapple', 'papaya']
    
  • Note: The elements of the second list are added to the end of the current list.

4. Add Any Iterable

  • The extend() method can also append elements from any iterable object (e.g., tuples, sets, or dictionaries):
    thislist = ["apple", "banana", "cherry"]
    thistuple = ("kiwi", "orange")
    thislist.extend(thistuple)
    print(thislist)  # Output: ['apple', 'banana', 'cherry', 'kiwi', 'orange']
    

Exercise

What will be the result of the following syntax?

mylist = ['apple', 'banana', 'cherry']
mylist.insert(0, 'orange')
print(mylist[1])

Answer: apple.

Explanation:

  • mylist.insert(0, 'orange') inserts "orange" at index 0.
  • The updated list becomes ['orange', 'apple', 'banana', 'cherry'].
  • Printing mylist[1] outputs the second item, which is "apple".


Key Points on Removing Items from Python Lists

1. Remove a Specified Item

  • Use the remove() method to remove the first occurrence of the specified value:
    thislist = ["apple", "banana", "cherry"]
    thislist.remove("banana")
    print(thislist)  # Output: ['apple', 'cherry']
    
  • If there are duplicate items, remove() will only remove the first occurrence:
    thislist = ["apple", "banana", "cherry", "banana", "kiwi"]
    thislist.remove("banana")
    print(thislist)  # Output: ['apple', 'cherry', 'banana', 'kiwi']
    

2. Remove an Item by Index

  • Use the pop() method to remove the item at a specific index:
    thislist = ["apple", "banana", "cherry"]
    thislist.pop(1)
    print(thislist)  # Output: ['apple', 'cherry']
    
  • If no index is specified, pop() will remove the last item:
    thislist = ["apple", "banana", "cherry"]
    thislist.pop()
    print(thislist)  # Output: ['apple', 'banana']
    

3. Remove an Item Using del

  • Use the del keyword to remove an item at a specific index:
    thislist = ["apple", "banana", "cherry"]
    del thislist[0]
    print(thislist)  # Output: ['banana', 'cherry']
    
  • Use del to delete the entire list:
    thislist = ["apple", "banana", "cherry"]
    del thislist
    # List no longer exists
    

4. Clear the Entire List

  • Use the clear() method to empty the list while keeping the list object:
    thislist = ["apple", "banana", "cherry"]
    thislist.clear()
    print(thislist)  # Output: []
    

Exercise

What is a list method for removing list items?

  • Options:
    • pop()
    • push()
    • delete()

Answer: pop().

Explanation:

  • pop() is a built-in method for removing items from a list by index.



Looping Through Python Lists

1. Loop Through a List Using for Loop

  • You can directly loop through the items in a list:
    thislist = ["apple", "banana", "cherry"]
    for x in thislist:
        print(x)
    
    Output:
    apple
    banana
    cherry
    

2. Loop Through the List Using Index Numbers

  • Use range() and len() to loop through items by their index:
    thislist = ["apple", "banana", "cherry"]
    for i in range(len(thislist)):
        print(thislist[i])
    
    Output:
    apple
    banana
    cherry
    
    • Here, the range [0, 1, 2] is created for the list indices.

3. Loop Through a List Using a while Loop

  • Use the while loop with the index and the length of the list:
    thislist = ["apple", "banana", "cherry"]
    i = 0
    while i < len(thislist):
        print(thislist[i])
        i += 1
    
    Output:
    apple
    banana
    cherry
    

4. Loop Through a List Using List Comprehension

  • Use list comprehension for a more concise looping syntax:
    thislist = ["apple", "banana", "cherry"]
    [print(x) for x in thislist]
    
    Output:
    apple
    banana
    cherry
    

Exercise

What is the correct syntax for looping through the items of a list?

Options:

  1. for x in ['apple', 'banana', 'cherry']:
        print(x)
    ``` ✅
    
  2. for x in ['apple', 'banana', 'cherry']
        print(x)
    ``` ❌ (Missing colon `:`)
    
  3. foreach x in ['apple', 'banana', 'cherry']
        print(x)
    ``` ❌ (Python does not use `foreach`)
    

Answer: Option 1.




Python List Comprehension

1. What is List Comprehension?

  • Definition: A shorter syntax to create a new list based on values from an existing list.
  • Example (Traditional Approach):
    fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
    newlist = []
    
    for x in fruits:
        if "a" in x:
            newlist.append(x)
    
    print(newlist)
    
    Output:
    ['apple', 'banana', 'mango']
    
  • Example (Using List Comprehension):
    fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
    newlist = [x for x in fruits if "a" in x]
    print(newlist)
    
    Output:
    ['apple', 'banana', 'mango']
    

2. Syntax

newlist = [expression for item in iterable if condition == True]
  • expression: The item or manipulated version of the item to include in the new list.
  • iterable: The original list, range, tuple, etc., being iterated.
  • condition: (Optional) Filters the items to be included in the new list.

3. Condition

  • Filters the items that evaluate to True.

  • Example: Exclude "apple":

    newlist = [x for x in fruits if x != "apple"]
    print(newlist)
    

    Output:

    ['banana', 'cherry', 'kiwi', 'mango']
    
  • Condition is Optional: Without a condition:

    newlist = [x for x in fruits]
    print(newlist)
    

    Output:

    ['apple', 'banana', 'cherry', 'kiwi', 'mango']
    

4. Iterable

  • Any iterable object can be used, e.g., lists, tuples, sets, etc.

  • Example: Use range():

    newlist = [x for x in range(10)]
    print(newlist)
    

    Output:

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
  • Example with a condition (Numbers less than 5):

    newlist = [x for x in range(10) if x < 5]
    print(newlist)
    

    Output:

    [0, 1, 2, 3, 4]
    

5. Expression

  • Manipulate each item in the iteration.

  • Example: Convert to uppercase:

    newlist = [x.upper() for x in fruits]
    print(newlist)
    

    Output:

    ['APPLE', 'BANANA', 'CHERRY', 'KIWI', 'MANGO']
    
  • Example: Set all values to "hello":

    newlist = ['hello' for x in fruits]
    print(newlist)
    

    Output:

    ['hello', 'hello', 'hello', 'hello', 'hello']
    
  • Example: Use condition in the expression (Replace "banana" with "orange"):

    newlist = [x if x != "banana" else "orange" for x in fruits]
    print(newlist)
    

    Output:

    ['apple', 'orange', 'cherry', 'kiwi', 'mango']
    

Exercise

Question:
Given the code:

fruits = ['apple', 'banana', 'cherry']
newlist = [x for x in fruits if x == 'banana']

What will be the value of newlist?

Options:

  1. ['apple', 'cherry']
  2. ['banana']
  3. True

Answer: ['banana']


****************

Key Points on Python - Sorting Lists

1. Sort List Alphanumerically (Ascending by Default)

  • The sort() method sorts lists alphabetically or numerically in ascending order.

  • Example (Alphabetical Sort):

    thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]
    thislist.sort()
    print(thislist)
    

    Output:

    ['banana', 'kiwi', 'mango', 'orange', 'pineapple']
    
  • Example (Numerical Sort):

    thislist = [100, 50, 65, 82, 23]
    thislist.sort()
    print(thislist)
    

    Output:

    [23, 50, 65, 82, 100]
    

2. Sort in Descending Order

  • Use the keyword argument reverse=True to sort in descending order.

  • Example (Descending Alphabetical Sort):

    thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]
    thislist.sort(reverse=True)
    print(thislist)
    

    Output:

    ['pineapple', 'orange', 'mango', 'kiwi', 'banana']
    
  • Example (Descending Numerical Sort):

    thislist = [100, 50, 65, 82, 23]
    thislist.sort(reverse=True)
    print(thislist)
    

    Output:

    [100, 82, 65, 50, 23]
    

3. Customize the Sort Function

  • Use the key=function argument to define a custom sort function.
  • Example (Sort by Distance to 50):
    def myfunc(n):
        return abs(n - 50)
    
    thislist = [100, 50, 65, 82, 23]
    thislist.sort(key=myfunc)
    print(thislist)
    
    Output:
    [50, 65, 23, 82, 100]
    

4. Case Sensitivity in Sorting

  • By default, sort() is case-sensitive, placing uppercase letters before lowercase ones.
  • Example (Case-Sensitive Sort):
    thislist = ["banana", "Orange", "Kiwi", "cherry"]
    thislist.sort()
    print(thislist)
    
    Output:
    ['Kiwi', 'Orange', 'banana', 'cherry']
    

5. Case-Insensitive Sorting

  • Use the key=str.lower argument to perform a case-insensitive sort.
  • Example:
    thislist = ["banana", "Orange", "Kiwi", "cherry"]
    thislist.sort(key=str.lower)
    print(thislist)
    
    Output:
    ['banana', 'cherry', 'Kiwi', 'Orange']
    

6. Reverse the Order

  • The reverse() method reverses the current order of list items, regardless of their values.
  • Example:
    thislist = ["banana", "Orange", "Kiwi", "cherry"]
    thislist.reverse()
    print(thislist)
    
    Output:
    ['cherry', 'Kiwi', 'Orange', 'banana']
    

Exercise

Question:
What is the correct syntax for sorting a list?

Options:

  1. mylist.orderby(0)
  2. mylist.order()
  3. mylist.sort()

Answer:
mylist.sort()

*****************

Key Points on Python - Copying Lists

1. Problem with Direct Assignment

  • Direct assignment (list2 = list1) does not create a new list; instead, list2 becomes a reference to list1.
  • Changes made to list1 will automatically reflect in list2.

2. Using the copy() Method

  • The copy() method creates a shallow copy of the list, independent of the original list.
  • Example:
    thislist = ["apple", "banana", "cherry"]
    mylist = thislist.copy()
    print(mylist)
    
    Output:
    ['apple', 'banana', 'cherry']
    

3. Using the list() Method

  • The list() method can also create a new list from an existing one.
  • Example:
    thislist = ["apple", "banana", "cherry"]
    mylist = list(thislist)
    print(mylist)
    
    Output:
    ['apple', 'banana', 'cherry']
    

4. Using the Slice (:) Operator

  • The slice operator ([:]) creates a copy of the entire list.
  • Example:
    thislist = ["apple", "banana", "cherry"]
    mylist = thislist[:]
    print(mylist)
    
    Output:
    ['apple', 'banana', 'cherry']
    

Exercise

Question:
What is the correct syntax for making a copy of a list?

Options:

  1. list2 = list1
  2. list2 = list1.copy()
  3. list2.copy(list1)

Answer:
list2 = list1.copy()



Here are all the points related to joining lists in Python:

  1. Using the + Operator: The easiest way to join two lists is by using the + operator.

    Example:

    list1 = ["a", "b", "c"]
    list2 = [1, 2, 3]
    list3 = list1 + list2
    print(list3)
    

    Output:

    ['a', 'b', 'c', 1, 2, 3]
    
  2. Using the append() Method: Another way to join two lists is by appending each item from list2 to list1 one by one.

    Example:

    list1 = ["a", "b", "c"]
    list2 = [1, 2, 3]
    for x in list2:
        list1.append(x)
    print(list1)
    

    Output:

    ['a', 'b', 'c', 1, 2, 3]
    
  3. Using the extend() Method: You can also use the extend() method, which adds elements from one list to another list.

    Example:

    list1 = ["a", "b", "c"]
    list2 = [1, 2, 3]
    list1.extend(list2)
    print(list1)
    

    Output:

    ['a', 'b', 'c', 1, 2, 3]
    

Exercise Question:
What is a correct syntax for joining list1 and list2 into list3?

Options:

  • list3 = join(list1, list2)
  • list3 = list1 + list2
  • list3 = [list1, list2]

Correct answer:

  • list3 = list1 + list2




Here are all the points related to Python list methods:

List Methods in Python:

  1. append()
    Adds an element at the end of the list.
    Example:

    list1.append(4)
    
  2. clear()
    Removes all the elements from the list.
    Example:

    list1.clear()
    
  3. copy()
    Returns a copy of the list.
    Example:

    list2 = list1.copy()
    
  4. count()
    Returns the number of elements with the specified value.
    Example:

    list1.count(2)
    
  5. extend()
    Adds the elements of a list (or any iterable) to the end of the current list.
    Example:

    list1.extend([4, 5, 6])
    
  6. index()
    Returns the index of the first element with the specified value.
    Example:

    list1.index(3)
    
  7. insert()
    Adds an element at the specified position.
    Example:

    list1.insert(1, 'a')
    
  8. pop()
    Removes the element at the specified position and returns it.
    Example:

    list1.pop(2)
    
  9. remove()
    Removes the item with the specified value.
    Example:

    list1.remove(3)
    
  10. reverse()
    Reverses the order of the list.
    Example:

    list1.reverse()
    
  11. sort()
    Sorts the list.
    Example:

    list1.sort()
    








No comments:

Post a Comment