Lists are one of the most commonly used data types, and this article has compiled the top 10 most visited q&a on StackOverflow about list operations, so if you’re running into any of these problems during development, think about how to fix them first.
1. How do I access the list subindex when iterating over a list
Normal version:
items = [8, 23, 45]
for index in range(len(items)):
print(index, "-->", items[index])
>>>
0 --> 8
1 --> 23
2 --> 45Copy the code
Elegant version:
for index, item in enumerate(items):
print(index, "-->", item)
>>>
0 --> 8
1 --> 23
2 --> 45Copy the code
Enumerate also specifies the starting point for the first element of an element, which is 0 by default, or 1:
for index, item in enumerate(items, start=1):
print(index, "-->", item)
>>>
1 --> 8
2 --> 23
3 --> 45Copy the code
What is the difference between the append and extend methods
Append means to append some data to the end of the list as a new element, and it can take any object
x = [1.2.3]
y = [4.5]
x.append(y)
print(x)
>>>
[1.2.3[4.5]]Copy the code
The extend argument must be an iterable that appends all elements of that object one by one to the end of the list
x = [1.2.3]
y = [4.5]
x.extend(y)
print(x)
>>>
[1.2.3.4.5]
# is equivalent to:
for i in y:
x.append(i)Copy the code
3. Check whether the list is empty
Normal version:
if len(items) == 0:
print(Empty list) orif items == []:
print(Empty list)Copy the code
Elegant version:
if not items:
print(Empty list)Copy the code
4. How to understand slicing
Slicing is used to get a subset of a specified norm in a list, and the syntax is very simple
items[start:end:step]Copy the code
Elements between the start and end-1 positions. Step indicates the step size. The default value is 1, indicating that the value is obtained continuously. If step is 2, indicating that the value is obtained every other element.
a = [1.2.3.4.5.6.7.8.9.10]
>>> a[3:8] # Elements between positions 3 and 8
[4.5.6.7.8]
>>> a[3:8:2] # fetch elements between positions 3 and 8 every other element
[4.6.8]
>>> a[:5] # omitting start means starting at the 0th element
[1.2.3.4.5]
>>> a[3:] # omitting end means to go to the last element
[4.5.6.7.8.9.10]
>>> a[::] # omit is equivalent to copying a list, which is a shallow copy
[1.2.3.4.5.6.7.8.9.10]Copy the code
How do I copy a list object
The first method:
new_list = old_list[:]Copy the code
The second method:
new_list = list(old_list)Copy the code
The third method:
import copy
# shallow copy
new_list = copy.copy(old_list)
# deep copy
new_list = copy.deepcopy(old_list)Copy the code
How do I get the last element in the list
Elements in an indexed list support both positive and negative numbers, where the index starts from the left side of the list and negative numbers start from the right side of the list. There are two ways to get the last element.
>>> a = [1.2.3.4.5.6.7.8.9.10]
>>> a[len(a)- 1]
10
>>> a[- 1]
10Copy the code
7. How to sort the list
There are two ways to sort a list. One is sort, which comes with lists, and the other is sorted, which is a built-in function. Complex data types can be sorted by specifying the key parameter. A list of dictionaries, sorted by the age field in the dictionary element:
items = [{'name': 'Homer'.'age': 39},
{'name': 'Bart'.'age': 10},
{"name": 'cater'.'age': 20}]
items.sort(key=lambda item: item.get("age"))
print(items)
>>>
[{'age': 10.'name': 'Bart'}, {'age': 20.'name': 'cater'}, {'age': 39.'name': 'Homer'}]Copy the code
The list has a sort method that resorts the original list, specifying the key argument, which is an anonymous function, and item, which is the dictionary element in the list. We sort by the age of the dictionary, which is ascending by default, and reverse=True, which is descending
items.sort(key=lambda item: item.get("age"), reverse=True) > > > [{'name': 'Homer'.'age': 39}, {'name': 'cater'.'age': 20}, {'name': 'Bart'.'age': 10}]Copy the code
If you don’t want to change the original list and instead generate a new ordered list object, you can have a built-in function called sorted that returns the new list
items = [{'name': 'Homer'.'age': 39},
{'name': 'Bart'.'age': 10},
{"name": 'cater'.'age': 20}]
new_items = sorted(items, key=lambda item: item.get("age"))
print(items)
>>>
[{'name': 'Homer'.'age': 39}, {'name': 'Bart'.'age': 10}, {'name': 'cater'.'age': 20}]
print(new_items)
>>>
[{'name': 'Bart'.'age': 10}, {'name': 'cater'.'age': 20}, {'name': 'Homer'.'age': 39}]Copy the code
8. How to remove an element from a list
There are three ways to remove elements from a list
Remove Removes an element, and only the first occurrence
>>> a = [0.2.2.3]
>>> a.remove(2)
>>> a
[0.2.3]
If the element to be removed is not in the list, ValueError is raised
>>> a.remove(7)
Traceback (most recent call last):
File "<stdin>", line 1.in <module>
ValueError: list.remove(x): x not inThe list,Copy the code
Del removes an element at the specified location
>>> a = [3.2.2.1]
Remove the first element
>>> del a[1]
[3.2.1]
Raise IndexError when the index of the lower table of the list is exceeded
>>> del a[7]
Traceback (most recent call last):
File "<stdin>", line 1.in <module>
IndexError: list assignment index out of rangeCopy the code
Pop is similar to del, but the pop method returns the removed element
>>> a = [4, 3, 5]
>>> a.pop(1)
3
>>> a
[4, 5]
Also, raise IndexError when the index of the lower table of the list is exceeded
>>> a.pop(7)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: pop index out of rangeCopy the code
9. How to join two lists
listone = [1, 2, 3]
listtwo = [4, 5, 6]
mergedlist = listone + listtwo
print(mergelist)
>>>
[1, 2, 3, 4, 5, 6]Copy the code
Lists implement operator overloading of +, making it possible to add not only numeric values but also two lists. Any object can implement + as long as you implement __add__ on the object, for example:
class User(object):
def __init__(self, age):
self.age = age
def __repr__(self):
return 'User(%d)' % self.age
def __add__(self, other):
age = self.age + other.age
return User(age)
user_a = User(10)
user_b = User(20)
c = user_a + user_b
print(c)
>>>
User(30)Copy the code
How do I randomly fetch an element from a list
import random
items = [8.23.45.12.78]
>>> random.choice(items)
78
>>> random.choice(items)
45
>>> random.choice(items)
12Copy the code
Published simultaneously at: foofish.net/python-list…