1. Definición
Una lista es una colección ordenada de objetos, entre corchetes [] y separados por comas.
Las listas son dinámicas , los elementos se pueden agregar o eliminar en cualquier momento.
Las listas son heterogéneas y pueden contener datos de diferentes tipos.
Se permiten elementos duplicados en la lista.
dos, crear
- Creado por corchetes
- Creado por la lista de constructores()
- Creado mediante comprensión de lista
# 中括号创建
li1 = []
print(li1) # 输出:[]
li1 = [1, "2", True]
print(li1) # 输出:[1, "2", True]
# 构造方法list()创建
li2 = list()
print(li2) # 输出:[]
li2 = list("good") # 字符串、元组、列表、集合、字典等均可
print(li2) # 输出:['g', 'o', 'o', 'd']
# 列表推导式创建
li3 = [i for i in range(0,4)]
print(li3) # 输出:[0, 1, 2, 3]
3. Uso de la lista
1. índice
Debido a que la lista está ordenada, puede obtener el valor de la posición correspondiente en la lista a través del índice.
- Indexación directa, la numeración comienza desde 0.
- Índice inverso, la numeración comienza desde -1.
Método de escritura: lista [índice]
li = [1, 2, 3, 4, 5]
print(li1[0]) # 输出:1
print(li1[-1]) # 输出:5
2. rebanar
Según el índice, en lugar de simplemente tomar un valor único, puede tomar una sección de la lista.
Método de escritura: lista[inicio: parada: paso]
- inicio: indica el valor del índice de inicio, el valor predeterminado es 0
- detener: indica el valor del índice final (sin incluir el valor del índice final en sí) y toma el valor de índice máximo de forma predeterminada.
- paso: valor del paso, el valor predeterminado es 1.
Nota: El corte sigue el principio de cerrar primero y abrir después. El valor de inicio comienza desde el valor inicial y el valor de parada toma el valor anterior de parada.
li = list("good boy")
print(li[0:-1:1]) # 输出:['g', 'o', 'o', 'd', ' ', 'b', 'o']
print(li[2:4]) # 输出:['o', 'd'],省略step
print(li[:4]) # 输出:['g', 'o', 'o', 'd'],省略start、step
print(li[2:]) # 输出:['o', 'd', ' ', 'b', 'o', 'y'],省略stop、step
print(li[::-2]) # 输出:['y', 'b', 'd', 'o'],省略start、stop,逆序、步进2打印。
3. Operador
Repetir: utilice el operador * para repetir los elementos de la lista de producción
Fusionar: use el operador + para combinar dos listas en una
li1 = [1, 'a'] * 5
print(li1) # 输出:[1, 'a', 1, 'a', 1, 'a', 1, 'a', 1, 'a']
li2 = ["a", "b"]
li3 = list([1, 2, 3])
print(li3 + li2) # 输出:[1, 2, 3, 'a', 'b']
4. Detección de miembros
in: Comprueba si un elemento está en la lista. Si devuelve Verdadero, en caso contrario devuelve Falso.
no en: comprueba si una lista no contiene un elemento. Devuelve Verdadero si no, de lo contrario devuelve Falso.
li = [i for i in range(1,4)]
print(1 in li) # 输出:True
print(100 not in li) # 输出:True
4. Métodos comunes
1、añadir()
Agregar un solo objeto al final de la lista
Método de escritura: list.append(item)
Parámetro de entrada: elemento de objeto
retorno: Ninguno
li = []
li.append("good")
li.append([1, "a"])
li.append({'a': 1})
print(li.append(1)) # 输出:None
print(li) # 输出:['good', [1, 'a'], {'a': 1}, 1]
print(len(li)) # 输出:4
2、extender()
Agregar todos los elementos de un iterable al final de la lista.
Escritura: list.extend(iterable)
Parámetro de entrada: objeto iterable iterable
retorno: Ninguno
li = []
li.extend("good")
li.extend([1, "a"])
print(li.extend({'a': 1})) # 输出:None
print(li) # 输出:['g', 'o', 'o', 'd', 1, 'a', 'a']
print(len(li)) # 输出:7
3、insertar()
Insertar un objeto en la posición de índice especificada
Método de escritura: list.insert(índice, elemento)
Parámetros de entrada: índice de valor de índice, elemento de objeto
retorno: Ninguno
La posición del índice original y los siguientes elementos se desplazan un bit hacia atrás.
li = [1, 2, 3]
print(li.insert(0, "good")) # 输出:None
print(li) # 输出:['good', 1, 2, 3]
li.insert(3, ["a", "b"])
print(li) # 输出:['good', 1, 2, ['a', 'b'], 3]
4、pop()
elimina y devuelve el elemento en el índice especificado
Escritura: list.pop(index) o list.pop()
Parámetro de entrada: índice de valor de índice, opcional
Devuelve: el elemento en el índice especificado, o el elemento final si no se especifica ningún índice
Genera IndexError si el valor del índice es incorrecto o la lista ya está vacía
li = [1, 2, 3, 4, 5]
print(li.pop(1)) # 输出:2
print(li) # 输出:[1, 3, 4, 5]
print(li.pop()) # 输出:5
print(li) # 输出:[1, 3, 4]
li.pop(3) # IndexError: pop index out of range
li1 = []
li1.pop() # IndexError: pop from empty list
5、eliminar()
Elimina el primer elemento de la lista igual al elemento
Método de escritura: list.remove(item)
Parámetro de entrada: elemento de elemento especificado
retorno: Ninguno
Si el elemento de destino no existe, se genera ValueError
li = [1, 2, "a", "b"]
print(li.remove(2)) # 输出:None
print(li) # 输出:[1, 'a', 'b']
li.remove("c")
print(li) # ValueError: list.remove(x): x not in list
6、ordenar()
Ordene la lista in situ, usando solo < para comparar entre elementos
Método de escritura: list.sort(clave=Ninguno, reverso=Falso)
Parámetro de entrada: admite 2 parámetros de palabras clave:
- clave: especifica una función con un argumento para extraer la clave de comparación de cada elemento de la lista
- inversa: el valor predeterminado es Falso para orden ascendente, Verdadero para orden descendente
retorno: Ninguno
nums = [2, 4, 3, 1, 5]
print(nums.sort()) # 输出:None
print(nums) # 输出:[1, 2, 3, 4, 5]
nums.sort(reverse=True)
print(nums) # 输出:[5, 4, 3, 2, 1]
words = ["Python", "Java", "R", "Go"]
words.sort(key=len)
print(words) # 输出:['R', 'Go', 'Java', 'Python']
7、inversa()
Invierte el orden de los elementos en una lista.
Método de escritura: list.reverse()
Parámetros de entrada: ninguno
retorno: Ninguno
La inversión es solo para el valor del índice y los elementos no se comparan entre sí.
nums = [8, 1, 5, 85, 77]
print(nums.reverse()) # 输出:None
print(nums) # 输出:[77, 85, 5, 1, 8]
Cinco, lista de anidamiento
La lista anidada se refiere al almacenamiento de listas dentro de listas.
Todos los métodos comunes para listas se aplican a listas anidadas.
li = [['a', 'b', 'c'], [1, 2, 3]]
print(li[1][2]) # 输出:3
li[0].append('d')
print(li) # 输出:[['a', 'b', 'c', 'd'], [1, 2, 3]]
li[0][1] = 1
print(li) # 输出:[['a', 1, 'c', 'd'], [1, 2, 3]]
Seis, comprensión de listas
La comprensión de listas se refiere al bucle para crear una lista, que es equivalente a una versión simplificada del bucle for para crear una lista.
Escribiendo: [x para x en... si...]
# for循环创建列表
li1 = []
for i in range(1, 11):
if i % 2 == 0:
li1.append(i ** 2)
print(li1) # 输出:[4, 16, 36, 64, 100]
# 列表推导式创建列表
li2 = [i ** 2 for i in range(1, 11) if i % 2 == 0]
print(li2) # 输出:[4, 16, 36, 64, 100]
# 无else时,if在for循环之后
# for循环创建列表
li1 = []
for i in range(1, 11):
if i % 2 == 0:
li1.append(i ** 2)
else:
li1.append(i)
print(li1) # 输出:[1, 4, 3, 16, 5, 36, 7, 64, 9, 100]
# 列表推导式创建列表
li2 = [i ** 2 if i % 2 == 0 else i for i in range(1, 11)]
print(li2) # 输出:[1, 4, 3, 16, 5, 36, 7, 64, 9, 100]
# 有else时,if…else在for循环之前