Trong bài viết này, chúng ta sẽ thảo luận về các chức năng nối thêm và mở rộng danh sách python. Chúng tôi cũng sẽ kiểm tra hiệu suất của các chức năng
danh sách nối thêm
Chức năng chắp thêm được sử dụng để thêm một mục vào cuối danh sách
Cú pháp của hàm append function
list.append[x]
ví dụ
Thêm một mục duy nhất vào danh sách
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]
đầu ra
['English', 'French', 'Hindi', 'Spanish']
Thêm nhiều mục vào danh sách. Chúng ta có thể lặp và thêm các mục vào danh sách. [Chúng tôi cũng có thể sử dụng chức năng mở rộng]
languages = ["English","French","Spanish"] ind_languages = ["Tamil","Hindi"] for language in ind_languages: languages.append[language] print[languages]
đầu ra
['English', 'French', 'Spanish', 'Tamil', 'Hindi']
Nối danh sách vào cuối danh sách
languages = ["English","French","Spanish"] ind_languages = ["Tamil","Hindi"] languages.append[ind_languages] print[languages]
đầu ra
['English', 'French', 'Spanish', ['Tamil', 'Hindi']]
mở rộng danh sách
Chức năng mở rộng danh sách được sử dụng để mở rộng danh sách bằng cách nối thêm tất cả các mục từ iterable
Cú pháp mở rộng danh sách
list.extend[iterable]
ví dụ
Để nối một danh sách con của các mục vào một danh sách khác, chúng ta có thể sử dụng chức năng mở rộng
________số 8
đầu ra
['English', 'French', 'Spanish', 'Tamil', 'Hindi']
Phương pháp nào nhanh hơn?
Để thêm một danh sách khác, chúng ta có thể sử dụng các chức năng này. Hãy so sánh tốc độ của các chức năng này
Hãy tạo một danh sách gồm 100 số và thêm 1000 mục vào đó
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]0
đầu ra
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]1
Hãy lặp lại và thêm các mục bằng cách sử dụng append
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]2
đầu ra
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]3
Từ đó, chúng ta có thể thấy rằng chức năng mở rộng nhanh hơn nhiều so với append. Nếu chúng ta muốn thêm một danh sách các mục vào một danh sách khác, chúng ta có thể sử dụng chức năng mở rộng
Phần kết luận
Tóm lại, danh sách nối thêm và mở rộng là các chức năng hữu ích. Để thêm một mục, chúng ta có thể sử dụng chức năng chắp thêm và chúng ta có thể sử dụng chức năng mở rộng để thêm các mục danh sách phụ. Bạn có thể đọc về hiệu suất của chức năng list len tại đây
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]41 bắt nguồn từ từ tiếng Ả Rập taqaddum [تقدّم] có nghĩa là "tiến bộ" và là từ viết tắt của "Anh yêu em rất nhiều" trong tiếng Tây Ban Nha [te quiero demasiado]
Ngay lập tức làm cho các vòng lặp của bạn hiển thị thước đo tiến độ thông minh - chỉ cần bọc bất kỳ vòng lặp nào bằng
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]42 và bạn đã hoàn tất
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]6
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]43
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]44 cũng có thể được sử dụng như một lối tắt thuận tiện cho
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]45
Nó cũng có thể được thực hiện như một mô-đun với các đường ống
['English', 'French', 'Hindi', 'Spanish']
0Chi phí hoạt động thấp -- khoảng 60 giây mỗi lần lặp lại [80 giây với
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]46] và được kiểm tra đơn vị dựa trên hồi quy hiệu suất. Để so sánh, ProgressBar được thiết lập tốt có chi phí hoạt động 800ns/lần lặp
Ngoài chi phí thấp,
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]41 sử dụng các thuật toán thông minh để dự đoán thời gian còn lại và bỏ qua các hiển thị lặp lại không cần thiết, cho phép chi phí không đáng kể trong hầu hết các trường hợp
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]41 hoạt động trên mọi nền tảng [Linux, Windows, Mac, FreeBSD, NetBSD, Solaris/SunOS], trong mọi bảng điều khiển hoặc trong GUI và cũng thân thiện với máy tính xách tay IPython/Jupyter
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]41 không yêu cầu bất kỳ phụ thuộc nào [thậm chí không phải
['English', 'French', 'Hindi', 'Spanish']
50. ], chỉ Python và một môi trường hỗ trợ các ký tự điều khiển ['English', 'French', 'Hindi', 'Spanish']
51 và ['English', 'French', 'Hindi', 'Spanish']
52Mục lục
- Cài đặt
- Bản phát hành ổn định PyPI mới nhất
- Bản phát hành phát triển mới nhất trên GitHub
- Bản phát hành Conda mới nhất
- Bản phát hành Snapcraft mới nhất
- Bản phát hành Docker mới nhất
- Khác
- Nhật ký thay đổi
- Cách sử dụng
- dựa trên iterable
- Thủ công
- mô-đun
- Câu hỏi thường gặp và các vấn đề đã biết
- Tài liệu
- Thông số
- Tùy chọn CLI bổ sung
- trả lại
- Chức năng tiện lợi
- mô hình con
53['English', 'French', 'Hindi', 'Spanish']
- Ví dụ và cách sử dụng nâng cao
- Mô tả và số liệu thống kê bổ sung
- Thanh tiến trình lồng nhau
- Móc và gọi lại
54['English', 'French', 'Hindi', 'Spanish']
- Tích hợp gấu trúc
- Tích hợp máy ảnh
- Tích hợp Dask
- Tích hợp IPython/Jupyter
- Tích hợp tùy chỉnh
- Màn hình/Đồng hồ đo động
- Viết tin nhắn
- chuyển hướng viết
- Chuyển hướng
55['English', 'French', 'Hindi', 'Spanish']
- Giám sát chủ đề, khoảng thời gian và miniters
- hàng hóa
- Đóng góp
- Cổng sang các ngôn ngữ khác
- GIẤY PHÉP
Cài đặt
Bản phát hành ổn định PyPI mới nhất
languages = ["English","French","Spanish"] ind_languages = ["Tamil","Hindi"] for language in ind_languages: languages.append[language] print[languages]1
Bản phát hành phát triển mới nhất trên GitHub
Kéo và cài đặt nhánh
['English', 'French', 'Hindi', 'Spanish']
56 phát hành trướclanguages = ["English","French","Spanish"] ind_languages = ["Tamil","Hindi"] for language in ind_languages: languages.append[language] print[languages]3
Bản phát hành Conda mới nhất
languages = ["English","French","Spanish"] ind_languages = ["Tamil","Hindi"] for language in ind_languages: languages.append[language] print[languages]4
Bản phát hành Snapcraft mới nhất
Có 3 kênh để lựa chọn
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]4
Lưu ý rằng các tệp nhị phân
['English', 'French', 'Hindi', 'Spanish']
57 hoàn toàn dành cho việc sử dụng CLI [không thể sử dụng ['English', 'French', 'Hindi', 'Spanish']
58] và tự động thiết lập hoàn thành tab ['English', 'French', 'Hindi', 'Spanish']
59Bản phát hành Docker mới nhất
['English', 'French', 'Hindi', 'Spanish']
5Khác
Có những nơi khác [không chính thức] mà bạn có thể tải xuống
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]41, đặc biệt là để sử dụng CLI
Nhật ký thay đổi
Danh sách tất cả các thay đổi có sẵn trên Bản phát hành của GitHub. , trên wiki hoặc trên trang web.
Cách sử dụng
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]41 rất linh hoạt và có thể được sử dụng theo nhiều cách. Ba cái chính được đưa ra dưới đây
dựa trên iterable
Bọc
['English', 'French', 'Spanish', 'Tamil', 'Hindi']
22 xung quanh bất kỳ lần lặp nào['English', 'French', 'Spanish', 'Tamil', 'Hindi']
2['English', 'French', 'Spanish', 'Tamil', 'Hindi']
23 là một phiên bản được tối ưu hóa đặc biệt của ['English', 'French', 'Spanish', 'Tamil', 'Hindi']
24['English', 'French', 'Spanish', 'Tamil', 'Hindi']
6Khởi tạo bên ngoài vòng lặp cho phép kiểm soát thủ công đối với
['English', 'French', 'Spanish', 'Tamil', 'Hindi']
22['English', 'French', 'Spanish', 'Tamil', 'Hindi']
8Thủ công
Kiểm soát thủ công các bản cập nhật
['English', 'French', 'Spanish', 'Tamil', 'Hindi']
22 bằng cách sử dụng câu lệnh ['English', 'French', 'Spanish', 'Tamil', 'Hindi']
27['English', 'French', 'Hindi', 'Spanish']
00Nếu biến tùy chọn
['English', 'French', 'Spanish', 'Tamil', 'Hindi']
28 [hoặc biến có thể lặp lại với ['English', 'French', 'Spanish', 'Tamil', 'Hindi']
29] được cung cấp, số liệu thống kê dự đoán sẽ được hiển thị['English', 'French', 'Spanish', 'Tamil', 'Hindi']
27 cũng là tùy chọn [bạn chỉ có thể gán ['English', 'French', 'Spanish', 'Tamil', 'Hindi']
22 cho một biến, nhưng trong trường hợp này đừng quên ['English', 'French', 'Spanish', 'Tamil', 'Hindi']
62 hoặc ['English', 'French', 'Spanish', 'Tamil', 'Hindi']
63 ở cuối['English', 'French', 'Hindi', 'Spanish']
01mô-đun
Có lẽ cách sử dụng tuyệt vời nhất của
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]41 là trong tập lệnh hoặc trên dòng lệnh. Chỉ cần chèn
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]41 [hoặc
['English', 'French', 'Spanish', 'Tamil', 'Hindi']
66] vào giữa các đường ống sẽ đi qua tất cả ['English', 'French', 'Spanish', 'Tamil', 'Hindi']
67 đến ['English', 'French', 'Spanish', 'Tamil', 'Hindi']
68 trong khi tiến trình in tới ['English', 'French', 'Spanish', 'Tamil', 'Hindi']
69Ví dụ dưới đây minh họa việc đếm số dòng trong tất cả các tệp Python trong thư mục hiện tại, bao gồm thông tin về thời gian
['English', 'French', 'Hindi', 'Spanish']
02Lưu ý rằng các đối số thông thường cho
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]41 cũng có thể được chỉ định
['English', 'French', 'Hindi', 'Spanish']
03Sao lưu một thư mục lớn?
['English', 'French', 'Hindi', 'Spanish']
04Điều này có thể được làm đẹp hơn nữa
['English', 'French', 'Hindi', 'Spanish']
05Hoặc được thực hiện ở cấp độ tệp bằng 7-zip
['English', 'French', 'Hindi', 'Spanish']
06Các chương trình CLI có sẵn đã xuất thông tin tiến độ cơ bản sẽ được hưởng lợi từ các cờ
['English', 'French', 'Spanish', 'Tamil', 'Hindi']
82 và ['English', 'French', 'Spanish', 'Tamil', 'Hindi']
83 của languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]41
['English', 'French', 'Hindi', 'Spanish']
07Câu hỏi thường gặp và các vấn đề đã biết
Các vấn đề phổ biến nhất liên quan đến đầu ra quá mức trên nhiều dòng, thay vì thanh tiến trình một dòng gọn gàng
- Console nói chung. yêu cầu hỗ trợ trả lại vận chuyển [
84,['English', 'French', 'Spanish', 'Tamil', 'Hindi']
85]['English', 'French', 'Spanish', 'Tamil', 'Hindi']
- Thanh tiến trình lồng nhau
- Console nói chung. yêu cầu hỗ trợ để di chuyển con trỏ lên dòng trước đó. Ví dụ: IDLE, ConEmu và PyCharm [cũng tại đây, tại đây và tại đây] thiếu hỗ trợ đầy đủ
- các cửa sổ. ngoài ra có thể yêu cầu mô-đun Python
86 để đảm bảo các thanh lồng nhau nằm trong các dòng tương ứng của chúng['English', 'French', 'Spanish', 'Tamil', 'Hindi']
- bảng chữ cái
- Các môi trường báo cáo rằng họ hỗ trợ unicode sẽ có các thanh tiến trình trơn tru. Dự phòng là thanh chỉ dành cho
87['English', 'French', 'Spanish', 'Tamil', 'Hindi']
- Bảng điều khiển Windows thường chỉ hỗ trợ một phần unicode và do đó thường yêu cầu ascii=True rõ ràng [cũng tại đây]. Điều này là do các ký tự unicode có chiều rộng bình thường được hiển thị không chính xác là "rộng" hoặc một số ký tự unicode không hiển thị
- Các môi trường báo cáo rằng họ hỗ trợ unicode sẽ có các thanh tiến trình trơn tru. Dự phòng là thanh chỉ dành cho
- Máy phát điện quấn
- Các hàm bao bọc của trình tạo có xu hướng ẩn độ dài của các lần lặp.
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]
41 không - Thay thế
89 bằng['English', 'French', 'Spanish', 'Tamil', 'Hindi']
000 hoặc['English', 'French', 'Hindi', 'Spanish']
001. Điều tương tự cũng áp dụng cho['English', 'French', 'Hindi', 'Spanish']
002['English', 'French', 'Hindi', 'Spanish']
- Thay thế
003 bằng['English', 'French', 'Hindi', 'Spanish']
004 hoặc thậm chí là['English', 'French', 'Hindi', 'Spanish']
005['English', 'French', 'Hindi', 'Spanish']
- Điều tương tự cũng áp dụng cho
006['English', 'French', 'Hindi', 'Spanish']
- Một số chức năng tiện ích hữu ích có thể được tìm thấy trong
007['English', 'French', 'Hindi', 'Spanish']
- Các hàm bao bọc của trình tạo có xu hướng ẩn độ dài của các lần lặp.
- Treo ống trong python2. khi sử dụng
languages = ["English","French","Hindi"] languages.append["Spanish"] print[languages]
41 trên CLI, bạn có thể cần sử dụng Python 3. 5+ để đệm chính xác - Không có đầu ra trung gian trong docker-compose. sử dụng
009 thay vì['English', 'French', 'Hindi', 'Spanish']
010 và['English', 'French', 'Hindi', 'Spanish']
011['English', 'French', 'Hindi', 'Spanish']
Nếu bạn gặp bất kỳ khó khăn nào khác, hãy duyệt và gửi .
Tài liệu
['English', 'French', 'Hindi', 'Spanish']
08Thông số
- có thể lặp lại . có thể lặp lại, tùy chọn
Có thể lặp lại để trang trí với thanh tiến trình. Để trống để quản lý cập nhật theo cách thủ công
- desc . str, tùy chọn
Tiền tố cho thanh tiến trình
- tổng . int hoặc float, tùy chọn
Số lần lặp dự kiến. Nếu không được chỉ định, len[iterable] được sử dụng nếu có thể. Nếu float["inf"] hoặc là phương sách cuối cùng, thì chỉ có số liệu thống kê tiến độ cơ bản được hiển thị [không có ETA, không có thanh tiến trình]. Nếu
012 là True và tham số này cần cập nhật sau đó, hãy chỉ định một số dương lớn tùy ý ban đầu, e. g. 9e9['English', 'French', 'Hindi', 'Spanish']
- rời khỏi . bool, tùy chọn
Nếu [mặc định. Đúng], giữ tất cả dấu vết của thanh tiến trình khi kết thúc quá trình lặp. Nếu
013, sẽ chỉ nghỉ nếu['English', 'French', 'Hindi', 'Spanish']
014 là['English', 'French', 'Hindi', 'Spanish']
015['English', 'French', 'Hindi', 'Spanish']
- tệp . ______2016 hoặc
017, tùy chọn['English', 'French', 'Hindi', 'Spanish']
Chỉ định nơi xuất thông báo tiến trình [mặc định. hệ thống. tiêu chuẩn]. Sử dụng phương pháp
018 và['English', 'French', 'Hindi', 'Spanish']
019. Để mã hóa, xem['English', 'French', 'Hindi', 'Spanish']
020['English', 'French', 'Hindi', 'Spanish']
- ncols . int, tùy chọn
Chiều rộng của toàn bộ thông báo đầu ra. Nếu được chỉ định, tự động thay đổi kích thước thanh tiến trình để nằm trong giới hạn này. Nếu không được chỉ định, hãy thử sử dụng chiều rộng môi trường. Dự phòng có chiều rộng 10 mét và không có giới hạn cho bộ đếm và số liệu thống kê. Nếu 0, sẽ không in bất kỳ đồng hồ nào [chỉ thống kê]
- khoảng nhỏ . thả nổi, tùy chọn
Khoảng thời gian cập nhật hiển thị tiến độ tối thiểu [mặc định. 0. 1] giây
- khoảng thời gian tối đa . thả nổi, tùy chọn
Khoảng thời gian cập nhật hiển thị tiến trình tối đa [mặc định. 10 giây. Tự động điều chỉnh
021 để tương ứng với['English', 'French', 'Hindi', 'Spanish']
022 sau một thời gian dài cập nhật màn hình bị trễ. Chỉ hoạt động nếu['English', 'French', 'Hindi', 'Spanish']
023 hoặc chuỗi giám sát được bật['English', 'French', 'Hindi', 'Spanish']
- máy cắt . int hoặc float, tùy chọn
Khoảng thời gian cập nhật hiển thị tiến độ tối thiểu, trong các lần lặp lại. Nếu 0 và
023, sẽ tự động điều chỉnh bằng với['English', 'French', 'Hindi', 'Spanish']
022 [CPU hiệu quả hơn, tốt cho các vòng lặp chặt chẽ]. Nếu > 0, sẽ bỏ qua hiển thị số lần lặp được chỉ định. Tinh chỉnh cái này và['English', 'French', 'Hindi', 'Spanish']
022 để có được các vòng lặp rất hiệu quả. Nếu tiến độ của bạn thất thường với cả lặp lại nhanh và chậm [mạng, bỏ qua mục, v.v.], bạn nên đặt miniters=1['English', 'French', 'Hindi', 'Spanish']
- ascii . bool hoặc str, tùy ý
Nếu không xác định hoặc Sai, hãy sử dụng unicode [khối trơn] để điền vào đồng hồ. Dự phòng là sử dụng các ký tự ASCII "123456789#"
- tắt . bool, tùy chọn
Có tắt toàn bộ trình bao bọc thanh tiến trình hay không [mặc định. Sai]. Nếu được đặt thành Không có, hãy tắt khi không phải TTY
- đơn vị . str, tùy chọn
Chuỗi sẽ được sử dụng để xác định đơn vị của mỗi lần lặp [mặc định. nó]
- unit_scale . bool hoặc int hoặc float, tùy chọn
Nếu 1 hoặc True, số lần lặp sẽ được giảm/thu nhỏ tự động và tiền tố số liệu theo tiêu chuẩn Hệ thống đơn vị quốc tế sẽ được thêm vào [kilo, mega, v.v. ] [vỡ nợ. Sai]. Nếu bất kỳ số nào khác không, sẽ chia tỷ lệ
28 và['English', 'French', 'Spanish', 'Tamil', 'Hindi']
028['English', 'French', 'Hindi', 'Spanish']
- dynamic_ncols . bool, tùy chọn
Nếu được đặt, liên tục thay đổi
029 và['English', 'French', 'Hindi', 'Spanish']
030 đối với môi trường [cho phép thay đổi kích thước cửa sổ] [mặc định. Sai]['English', 'French', 'Hindi', 'Spanish']
- làm mịn . thả nổi, tùy chọn
Hệ số làm mịn trung bình di chuyển hàm mũ để ước tính tốc độ [bỏ qua trong chế độ GUI]. Phạm vi từ 0 [tốc độ trung bình] đến 1 [tốc độ hiện tại/tức thời] [mặc định. 0. 3]
- bar_format . str, tùy chọn
Chỉ định định dạng chuỗi thanh tùy chỉnh. Có thể ảnh hưởng đến hiệu suất. [vỡ nợ. '{l_bar}{bar}{r_bar}'], trong đó l_bar='{desc}. {phần trăm. 3. 0f}%. ' và r_bar='. {n_fmt}/{total_fmt} [{elapsed}