Trong quá trình phát triển của bất kỳ hệ thống nào, việc xử lý các danh sách là rất phổ biến, chẳng hạn như danh sách các sản phẩm. Giả sử chúng ta có đại diện sau đây của một sản phẩm
clase Producto [objeto]: def __init __ [self, nombre, valor]:
self .__ nombre = nombre
auto .__ valor = valor
def __repr __ [self]:
return "nombre:% s valor:% s"% [self .__ nombre, self .__ valor]
def get_nombre [self]:
return self .__ nombre
def get_valor [self]:
return self .__ valor
Vì vậy, chúng tôi có một danh sách với một số sản phẩm
from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
Nếu chúng tôi chạy mã này, chúng tôi sẽ nhận được kết quả sau
________haiHiện tại, mọi thứ đang diễn ra như mong đợi. Nhưng nếu chúng ta muốn thêm một sản phẩm mới vào danh sách này thì sao? . Sau đó, hãy thử chúng. Chúng ta sẽ bắt đầu với
from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
7producto4 = Producto["Queso", 4.25]
productos.append[producto4]
print productos
Nhìn xem kết quả là gì
[nombre:Chocolate valor:4.35, nombre:Jugo valor:3.75, nombre:Feijao valor:10.5, nombre:Queso valor:4.25]
Mọi thứ dường như diễn ra như mong đợi. Vì vậy, hãy thử chức năng
from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
8producto4 = Producto["Queso", 4.25]
productos.extend[producto4]
print productos
Hãy thử lại mã
from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
0ối. Có vẻ như phần mở rộng không thể thêm một đối tượng vào danh sách. Có thật không?
from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
8, không giống như from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
7, lặp qua phần tử bạn muốn thêm, tức là bao bọc đối số được truyền bởi tham số bên trong một vòng lặp, sau đó thêm các giá trị có trong tham số đó, trong trường hợp này, bạn đã cố gắng thực hiện điều này với đối tượng loại Sản phẩm. Đây chính xác là lý do tại sao không thể thêm đối tượng loại Sản phẩm và nó đã gây ra lỗi nàyVậy điều đó có nghĩa là chúng ta không thể sử dụng phần mở rộng để thêm các đối tượng?
Không hẳn
Một giải pháp cho vấn đề này là, thay vì gửi một đối tượng thuần túy, hãy gửi dưới dạng tham số cấu trúc có thể lặp lại chứa đối tượng thuộc loại "Sản phẩm", tức là gửi danh sách chứa Sản phẩm!
from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
3bây giờ nó có hoạt động không?
from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
4Nó hoạt động như mong đợi. Tuy nhiên, chúng tôi chỉ thêm một yếu tố duy nhất!. Nếu chúng ta muốn thêm nhiều yếu tố thì sao? . Nó sẽ hoạt động mà không có vấn đề?
from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
6Khi kiểm tra mã, chúng tôi nhận được kết quả sau
from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
0Rõ ràng nó hoạt động, nhưng lưu ý rằng thay vì thêm từng sản phẩm vào danh sách sản phẩm, nó đã thêm toàn bộ danh sách!. Nghĩa là, khi chúng ta sử dụng append, nó chỉ cần thêm toàn bộ giá trị vào danh sách. Nhưng nếu chúng ta sử dụng
from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
8 thì sao? ________mười mộtChạy lại mã
from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
2Nó hoạt động như mong đợi. Do đó, chúng tôi kết luận rằng hai chức năng hoạt động như sau
nối thêm. Thêm bất kỳ giá trị đầy đủ nào, ví dụ: nếu chúng tôi gửi một đối tượng, nó sẽ thêm đối tượng, nếu chúng tôi gửi một danh sách, nó sẽ thêm toàn bộ danh sách thay vì các phần tử của nó
Gia hạn. thêm các phần tử của cấu trúc có thể lặp lại, ví dụ: nếu chúng ta gửi một đối tượng thuần túy thì nó không biết cách thêm nó, tuy nhiên nếu chúng ta gửi cùng một đối tượng đó trong danh sách, nó sẽ quét danh sách và thêm đối tượng đó và nếu có những đối tượng khác thì phần còn lại bên trong danh sách
Chúng ta có thể thấy rõ sự khác biệt giữa hai hàm khi thử thêm một chuỗi, ví dụ chuỗi "chocolate"
from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
3nối kết quả
from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
4_from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
5nối kết quả
from model import Producto
Chocolate = Producto["Chocolate", 4.35]
Jugo = Producto["Jugo", 3.75]
Frijoles = Producto["Frijoles", 10.5]
Producto = [Chocolate, Jugo, Frijoles]
print Productos
6Lưu ý rằng trong khi append thêm toàn bộ chuỗi, hãy mở rộng từng chữ cái đã thêm, bởi vì chuỗi, đằng sau hậu trường, là một mảng của
[nombre:Chocolate valor:4.35, nombre:Jugo valor:3.75, nombre:Frijoles valor:10.5]
5, do đó, nó quét mảng này, tức là cấu trúc có thể lặp lại này và thêm từng mụcCòn về việc tìm hiểu thêm về Python và các tài nguyên khác nhau của nó thì sao?