Tổng của 10 số trong Python
Hàm tích hợp sẵn của Python 9 là một cách hiệu quả và Pythonic để tính tổng danh sách các giá trị số. Cộng nhiều số lại với nhau là một bước trung gian phổ biến trong nhiều phép tính, vì vậy 9 là một công cụ khá tiện dụng cho lập trình viên Python Show
Là một trường hợp sử dụng bổ sung và thú vị, bạn có thể nối các danh sách và bộ dữ liệu bằng cách sử dụng 9, điều này có thể thuận tiện khi bạn cần làm phẳng một danh sách các danh sáchTrong hướng dẫn này, bạn sẽ học cách
Kiến thức này sẽ giúp bạn tiếp cận và giải quyết hiệu quả các vấn đề tổng kết trong mã của mình bằng cách sử dụng 9 hoặc các công cụ chuyên dụng và thay thế khácTiền thưởng miễn phí. Nhấp vào đây để nhận Bảng cheat Python và tìm hiểu kiến thức cơ bản về Python 3, như làm việc với các kiểu dữ liệu, từ điển, danh sách và hàm Python Tìm hiểu vấn đề tổng kếtTính tổng các giá trị số với nhau là một vấn đề khá phổ biến trong lập trình. Ví dụ: giả sử bạn có một danh sách các số [1, 2, 3, 4, 5] và muốn cộng chúng lại với nhau để tính tổng của chúng. Với số học tiêu chuẩn, bạn sẽ làm một cái gì đó như thế này 1 + 2 + 3 + 4 + 5 = 15 Theo như toán học, biểu thức này khá đơn giản. Nó hướng dẫn bạn thực hiện một loạt các phép cộng ngắn cho đến khi bạn tìm được tổng của tất cả các số Có thể thực hiện phép tính cụ thể này bằng tay, nhưng hãy tưởng tượng một số tình huống khác mà điều đó có thể không khả thi. Nếu bạn có một danh sách số đặc biệt dài, việc thêm bằng tay có thể không hiệu quả và dễ bị lỗi. Điều gì xảy ra nếu bạn thậm chí không biết có bao nhiêu mục trong danh sách? Trong những tình huống như thế này, cho dù bạn có một danh sách dài hay ngắn các số, Python có thể khá hữu ích để giải các bài toán tính tổng Nếu bạn muốn tính tổng các số bằng cách tạo giải pháp của riêng mình từ đầu, thì bạn có thể thử sử dụng vòng lặp 8>>> 0Tại đây, trước tiên bạn tạo 9 và khởi tạo nó thành 20. Biến này hoạt động như một bộ tích lũy trong đó bạn lưu trữ các kết quả trung gian cho đến khi bạn nhận được kết quả cuối cùng. Vòng lặp lặp qua 21 và cập nhật 9 bằng cách tích lũy từng giá trị liên tiếp bằng cách sử dụng phép gán tăng cườngBạn cũng có thể bọc vòng lặp 8 trong một hàm. Bằng cách này, bạn có thể sử dụng lại mã cho các danh sách khác nhau>>> 6Trong 24, bạn lấy một iterable—cụ thể là danh sách các giá trị số—làm đối số và trả về tổng giá trị trong danh sách đầu vào. Nếu danh sách đầu vào trống, thì hàm trả về 20. Vòng lặp 8 giống như vòng lặp mà bạn đã thấy trước đâyBạn cũng có thể sử dụng đệ quy thay vì lặp lại. Đệ quy là một kỹ thuật lập trình chức năng trong đó một hàm được gọi theo định nghĩa của chính nó. Nói cách khác, một hàm đệ quy gọi chính nó trong một vòng lặp >>>
Khi bạn định nghĩa một hàm đệ quy, bạn có nguy cơ chạy vào một vòng lặp vô hạn. Để ngăn chặn điều này, bạn cần xác định cả trường hợp cơ sở dừng đệ quy và trường hợp đệ quy để gọi hàm và bắt đầu vòng lặp ẩn Trong ví dụ trên, trường hợp cơ sở ngụ ý rằng tổng của danh sách có độ dài bằng 0 là 20. Trường hợp đệ quy ngụ ý rằng tổng số tiền là giá trị đầu tiên, 28, cộng với tổng của các giá trị còn lại, 29. Bởi vì trường hợp đệ quy sử dụng một chuỗi ngắn hơn trên mỗi lần lặp, bạn sẽ gặp trường hợp cơ sở khi 21 là một danh sách có độ dài bằng không. Kết quả cuối cùng, bạn nhận được tổng của tất cả các mục trong danh sách đầu vào của mình, 21Ghi chú. Trong ví dụ này, nếu bạn không kiểm tra danh sách đầu vào trống (trường hợp cơ sở của bạn), thì 24 sẽ không bao giờ chạy vào một vòng lặp đệ quy vô hạn. Khi danh sách 21 của bạn đạt đến độ dài 20, mã sẽ cố truy cập vào một mục từ danh sách trống, điều này làm tăng 95 và phá vỡ vòng lặpVới kiểu triển khai này, bạn sẽ không bao giờ nhận được tổng từ chức năng này. Bạn sẽ nhận được một 95 mỗi lầnMột tùy chọn khác để tổng hợp danh sách các số trong Python là sử dụng 97 từ 98. Để lấy tổng của một danh sách các số, bạn có thể chuyển 99 hoặc một hàm 40 thích hợp làm đối số đầu tiên cho 97>>>
Bạn có thể gọi 97 bằng cách giảm hoặc gấp, 43 cùng với 44 làm đối số. Sau đó, 97 sử dụng hàm đầu vào để xử lý 44 và trả về một giá trị tích lũy duy nhấtTrong ví dụ đầu tiên, hàm rút gọn là 47, lấy hai số và cộng chúng lại với nhau. Kết quả cuối cùng là tổng của các số trong đầu vào 44. Như một nhược điểm, 97 tăng một 50 khi bạn gọi nó với một 44 trốngTrong ví dụ thứ hai, hàm rút gọn là hàm 40 trả về phép cộng hai sốVì các phép tính tổng như thế này là phổ biến trong lập trình, nên viết mã một hàm mới mỗi khi bạn cần tính tổng một số số là công việc lặp đi lặp lại nhiều lần. Ngoài ra, sử dụng 97 không phải là giải pháp dễ đọc nhất dành cho bạnPython cung cấp một chức năng tích hợp chuyên dụng để giải quyết vấn đề này. Chức năng được gọi thuận tiện là 9. Vì đây là hàm tích hợp nên bạn có thể sử dụng trực tiếp trong mã của mình mà không cần nhập bất kỳ thứ gìLoại bỏ các quảng cáoBắt đầu với >>> def sum_numbers(numbers): .. if len(numbers) == 0: .. return 0 .. return numbers[0] + sum_numbers(numbers[1:]) ... >>> sum_numbers([1, 2, 3, 4, 5]) 15 9 của PythonKhả năng đọc là một trong những nguyên tắc quan trọng nhất đằng sau triết lý của Python. Hình dung những gì bạn đang yêu cầu một vòng lặp thực hiện khi tính tổng một danh sách các giá trị. Bạn muốn nó lặp qua một số số, tích chúng trong một biến trung gian và trả về tổng cuối cùng. Tuy nhiên, bạn có thể tưởng tượng ra một phiên bản tổng kết dễ đọc hơn mà không cần vòng lặp. Bạn muốn Python lấy một số số và tính tổng chúng lại với nhau Bây giờ hãy nghĩ về cách 97 tính tổng. Việc sử dụng 97 được cho là khó đọc hơn và ít đơn giản hơn so với giải pháp dựa trên vòng lặpĐây là lý do tại sao Python 2. 3 đã thêm 9 làm hàm tích hợp để cung cấp giải pháp Pythonic cho bài toán tổng kết. Alex Martelli đã đóng góp hàm này, ngày nay là cú pháp ưa thích để tổng hợp danh sách các giá trị>>> 2Ồ. Thật gọn gàng, phải không? . Sử dụng 9 dễ đọc hơn nhiều so với vòng lặp 8 hoặc cuộc gọi 97. Không giống như 97, 9 không tăng 50 khi bạn cung cấp một lần lặp trống. Thay vào đó, nó dễ hiểu trả về 20Bạn có thể gọi 9 với hai đối số sau
Bên trong, 9 thêm 48 cộng với các giá trị trong 44 từ trái sang phải. Các giá trị trong đầu vào 44 thường là số, nhưng bạn cũng có thể sử dụng danh sách và bộ dữ liệu. Đối số tùy chọn 48 có thể chấp nhận một số, danh sách hoặc bộ dữ liệu, tùy thuộc vào những gì được truyền cho 44. Nó không thể lấy một chuỗiTrong hai phần sau, bạn sẽ tìm hiểu những kiến thức cơ bản về cách sử dụng 9 trong mã của mìnhĐối số bắt buộc. >>> def sum_numbers(numbers): .. if len(numbers) == 0: .. return 0 .. return numbers[0] + sum_numbers(numbers[1:]) ... >>> sum_numbers([1, 2, 3, 4, 5]) 15 44Việc chấp nhận bất kỳ Python nào có thể lặp lại làm đối số đầu tiên của nó làm cho 9 trở nên chung chung, có thể tái sử dụng và đa hình. Do tính năng này, bạn có thể sử dụng 9 với danh sách, bộ dữ liệu, bộ, đối tượng 600 và từ điển>>> 9Trong tất cả các ví dụ này, 9 tính tổng cộng của tất cả các giá trị trong đầu vào có thể lặp lại bất kể loại của chúng. Trong hai ví dụ về từ điển, cả hai lệnh gọi đến 9 đều trả về tổng các khóa của từ điển đầu vào. Ví dụ đầu tiên tính tổng các khóa theo mặc định và ví dụ thứ hai tính tổng các khóa do lệnh gọi 603 trên từ điển đầu vàoNếu từ điển của bạn lưu trữ các số trong các giá trị của nó và bạn muốn tính tổng các giá trị này thay vì các khóa, thì bạn có thể thực hiện việc này bằng cách sử dụng 604 giống như trong ví dụ về 603Bạn cũng có thể sử dụng 9 với khả năng hiểu danh sách làm đối số. Đây là một ví dụ tính tổng bình phương của một dải giá trị>>> 4Trăn 2. 4 biểu thức trình tạo được thêm vào ngôn ngữ. Một lần nữa, 9 hoạt động như mong đợi khi bạn sử dụng biểu thức trình tạo làm đối số>>> 5Ví dụ này cho thấy một trong những kỹ thuật Pythonic nhất để tiếp cận vấn đề tổng kết. Nó cung cấp một giải pháp thanh lịch, dễ đọc và hiệu quả trong một dòng mã Đối số tùy chọn. >>> def sum_numbers(numbers): .. if len(numbers) == 0: .. return 0 .. return numbers[0] + sum_numbers(numbers[1:]) ... >>> sum_numbers([1, 2, 3, 4, 5]) 15 48Đối số thứ hai và tùy chọn, 48, cho phép bạn cung cấp một giá trị để khởi tạo quy trình tổng kết. Đối số này rất hữu ích khi bạn cần xử lý tuần tự các giá trị tích lũy>>> 4Tại đây, bạn cung cấp giá trị ban đầu từ 610 đến 48. Hiệu ứng ròng là 9 thêm giá trị này vào tổng tích lũy của các giá trị trong lần lặp đầu vào. Lưu ý rằng bạn có thể cung cấp 48 làm đối số vị trí hoặc làm đối số từ khóa. Tùy chọn thứ hai rõ ràng hơn và dễ đọc hơnNếu bạn không cung cấp giá trị cho 48 thì giá trị đó sẽ mặc định là 20. Giá trị mặc định của 20 đảm bảo hành vi dự kiến trả về tổng của các giá trị đầu vàoTính tổng các giá trị sốMục đích chính của 9 là cung cấp một cách Pythonic để cộng các giá trị số lại với nhau. Đến đây các bạn đã biết cách sử dụng hàm tính tổng các số nguyên. Ngoài ra, bạn có thể sử dụng 9 với bất kỳ loại Python số nào khác, chẳng hạn như 619, 620, 621 và 622Dưới đây là một số ví dụ về việc sử dụng 9 với các giá trị thuộc các loại số khác nhau>>> 04Ở đây, trước tiên bạn sử dụng 9 với số dấu phẩy động. Cần lưu ý hành vi của hàm khi bạn sử dụng các ký hiệu đặc biệt 625 và 626 trong các cuộc gọi 627 và 628. Biểu tượng đầu tiên đại diện cho một giá trị vô hạn, vì vậy, 9 trả về 625. Biểu tượng thứ hai đại diện cho các giá trị NaN (không phải số). Vì bạn không thể cộng các số với các số không phải là số, nên kết quả là bạn nhận được 626Các ví dụ khác tính tổng các lần lặp của các số 620, 633 và 634. Trong mọi trường hợp, 9 trả về tổng tích lũy kết quả bằng cách sử dụng loại số thích hợptrình tự nốiMặc dù 9 chủ yếu nhằm mục đích hoạt động trên các giá trị số, nhưng bạn cũng có thể sử dụng hàm này để nối các chuỗi như danh sách và bộ dữ liệu. Để làm được điều đó, bạn cần cung cấp một giá trị thích hợp cho 48>>> 60Trong các ví dụ này, bạn sử dụng 9 để nối các danh sách và bộ dữ liệu. Đây là một tính năng thú vị mà bạn có thể sử dụng để làm phẳng danh sách các danh sách hoặc một bộ gồm các bộ. Yêu cầu chính để các ví dụ này hoạt động là chọn một giá trị thích hợp cho 48. Ví dụ: nếu bạn muốn nối các danh sách, thì 48 cần giữ một danh sáchTrong các ví dụ trên, 9 đang thực hiện thao tác nối bên trong, do đó, nó chỉ hoạt động với các loại trình tự hỗ trợ nối, ngoại trừ các chuỗi>>> 61Khi bạn cố gắng sử dụng 9 để nối các chuỗi, bạn sẽ nhận được một 50. Như thông báo ngoại lệ gợi ý, bạn nên sử dụng 644 để nối các chuỗi trong Python. Bạn sẽ thấy các ví dụ về việc sử dụng phương pháp này sau này khi đến phần Sử dụng các phương án thay thế cho 9Thực hành với >>> def sum_numbers(numbers): .. if len(numbers) == 0: .. return 0 .. return numbers[0] + sum_numbers(numbers[1:]) ... >>> sum_numbers([1, 2, 3, 4, 5]) 15 9 của PythonCho đến giờ, bạn đã học được những điều cơ bản khi làm việc với 9. Bạn đã học cách sử dụng hàm này để cộng các giá trị số với nhau và cũng để nối các chuỗi như danh sách và bộ dữ liệuTrong phần này, bạn sẽ xem xét thêm một số ví dụ về thời điểm và cách sử dụng 9 trong mã của bạn. Với những ví dụ thực tế này, bạn sẽ biết rằng hàm tích hợp sẵn này khá hữu ích khi bạn đang thực hiện các phép tính yêu cầu tìm tổng của một chuỗi số như một bước trung gianBạn cũng sẽ biết rằng 9 có thể hữu ích khi bạn làm việc với các danh sách và bộ dữ liệu. Một ví dụ đặc biệt mà bạn sẽ xem xét là khi bạn cần làm phẳng một danh sách các danh sáchLoại bỏ các quảng cáoTính toán các khoản tiền tích lũyVí dụ đầu tiên bạn sẽ viết mã liên quan đến cách tận dụng đối số 48 để tính tổng danh sách tích lũy các giá trị sốGiả sử bạn đang phát triển một hệ thống để quản lý việc bán một sản phẩm nhất định tại một số điểm bán hàng khác nhau. Mỗi ngày, bạn nhận được một báo cáo đơn vị đã bán từ mỗi điểm bán hàng. Bạn cần tính tổng cộng dồn một cách có hệ thống để biết cả công ty bán được bao nhiêu đơn vị trong tuần. Để giải quyết vấn đề này, bạn có thể sử dụng 9>>> 62Bằng cách sử dụng 48, bạn đặt một giá trị ban đầu để khởi tạo tổng, cho phép bạn thêm các đơn vị liên tiếp vào tổng phụ đã tính toán trước đó. Vào cuối tuần, bạn sẽ có tổng số đơn vị đã bán của công tyTính giá trị trung bình của một mẫuMột trường hợp sử dụng thực tế khác của 9 là sử dụng nó như một phép tính trung gian trước khi thực hiện các phép tính tiếp theo. Ví dụ: giả sử bạn cần tính giá trị trung bình cộng của một mẫu giá trị số. Giá trị trung bình số học, còn được gọi là giá trị trung bình, là tổng của các giá trị chia cho số lượng giá trị hoặc điểm dữ liệu trong mẫuNếu bạn có mẫu [2, 3, 4, 2, 3, 6, 4, 2] và bạn muốn tính trung bình cộng bằng tay, thì bạn có thể giải phép toán này (2 + 3 + 4 + 2 + 3 + 6 + 4 + 2)/8 = 3. 25 Nếu bạn muốn tăng tốc độ này bằng cách sử dụng Python, bạn có thể chia nó thành hai phần. Phần đầu tiên của phép tính này, khi bạn cộng các số lại với nhau, là một nhiệm vụ dành cho 9. Phần tiếp theo của phép toán, nơi bạn đang chia cho 8, sử dụng số đếm trong mẫu của bạn. Để tính số chia của bạn, bạn có thể sử dụng 655>>> 63Tại đây, lệnh gọi tới 9 sẽ tính tổng các điểm dữ liệu trong mẫu của bạn. Tiếp theo, bạn sử dụng 655 để lấy số điểm dữ liệu. Cuối cùng, bạn thực hiện phép chia cần thiết để tính trung bình cộng của mẫuTrong thực tế, bạn có thể muốn biến mã này thành một hàm với một số tính năng bổ sung, chẳng hạn như tên mô tả và kiểm tra các mẫu trống >>> 64Bên trong 658, trước tiên bạn kiểm tra xem mẫu đầu vào có bất kỳ điểm dữ liệu nào không. Nếu không, thì bạn tăng một 659 với một thông báo mô tả. Trong ví dụ này, bạn sử dụng toán tử hải mã để lưu trữ số lượng điểm dữ liệu trong biến 660 để bạn không cần gọi lại 655. Câu lệnh return tính giá trị trung bình cộng của mẫu và gửi nó trở lại mã gọiGhi chú. Tính toán giá trị trung bình của một mẫu dữ liệu là một hoạt động phổ biến trong thống kê và phân tích dữ liệu. Thư viện chuẩn Python cung cấp một mô-đun thuận tiện có tên là 662 để tiếp cận các loại tính toán nàyTrong mô-đun 662, bạn sẽ tìm thấy một hàm có tên là 664>>> 65Hàm 665 có hành vi rất giống với hàm 658 mà bạn đã mã hóa trước đó. Khi bạn gọi 664 với một mẫu giá trị số, bạn sẽ nhận được giá trị trung bình cộng của dữ liệu đầu vào. Khi bạn chuyển một danh sách trống tới 664, bạn sẽ nhận được một 669Lưu ý rằng khi bạn gọi 658 với một mẫu thích hợp, bạn sẽ nhận được giá trị trung bình mong muốn. Nếu bạn gọi 658 với một mẫu trống, thì bạn sẽ nhận được một 659 như mong đợiTìm Tích vô hướng của hai dãyMột vấn đề khác mà bạn có thể giải bằng cách sử dụng 9 là tìm tích vô hướng của hai chuỗi giá trị số có độ dài bằng nhau. Tích vô hướng là tổng đại số của các tích của mỗi cặp giá trị trong chuỗi đầu vào. Ví dụ: nếu bạn có các chuỗi (1, 2, 3) và (4, 5, 6), thì bạn có thể tính tích vô hướng của chúng bằng tay bằng cách sử dụng phép cộng và phép nhân1 × 4 + 2 × 5 + 3 × 6 = 32 Để trích xuất các cặp giá trị liên tiếp từ chuỗi đầu vào, bạn có thể sử dụng 674. Sau đó, bạn có thể sử dụng biểu thức trình tạo để nhân từng cặp giá trị. Cuối cùng, 9 có thể tính tổng các tích>>> 66Với 674, bạn tạo một danh sách các bộ dữ liệu với các giá trị từ mỗi chuỗi đầu vào. Biểu thức trình tạo lặp qua từng bộ trong khi nhân các cặp giá trị liên tiếp được sắp xếp trước đó bởi 674. Bước cuối cùng là thêm các sản phẩm lại với nhau bằng cách sử dụng 9Mã trong ví dụ trên hoạt động. Tuy nhiên, tích vô hướng được xác định cho các chuỗi có độ dài bằng nhau, vậy điều gì xảy ra nếu bạn cung cấp các chuỗi có độ dài khác nhau? Để giải quyết khả năng này, bạn có thể kết thúc lệnh gọi tới 9 trong một chức năng tùy chỉnh và cung cấp kiểm tra thích hợp về độ dài của các chuỗi đầu vào>>> 67Ở đây, 681 lấy hai chuỗi làm đối số và trả về tích vô hướng tương ứng của chúng. Nếu các chuỗi đầu vào có độ dài khác nhau, thì hàm sẽ tăng 659Nhúng chức năng vào chức năng tùy chỉnh cho phép bạn sử dụng lại mã. Nó cũng cung cấp cho bạn cơ hội để đặt tên cho chức năng một cách mô tả để người dùng biết chức năng đó làm gì chỉ bằng cách đọc tên của nó Làm phẳng một danh sách các danh sáchLàm phẳng một danh sách các danh sách là một nhiệm vụ phổ biến trong Python. Giả sử bạn có một danh sách các danh sách và cần làm phẳng danh sách đó thành một danh sách duy nhất chứa tất cả các mục từ danh sách lồng nhau ban đầu. Bạn có thể sử dụng bất kỳ cách tiếp cận nào để làm phẳng danh sách trong Python. Ví dụ: bạn có thể sử dụng vòng lặp 8, như trong đoạn mã sau>>> 68Bên trong 684, vòng lặp lặp lại trên tất cả các danh sách lồng nhau có trong 685. Sau đó, nó nối chúng trong 686 bằng cách sử dụng thao tác gán tăng cường ( 687). Kết quả là bạn nhận được một danh sách phẳng với tất cả các mục từ danh sách lồng nhau ban đầuNhưng chờ đã. Bạn đã học cách sử dụng 9 để nối các chuỗi trong hướng dẫn này. Bạn có thể sử dụng tính năng đó để làm phẳng một danh sách các danh sách như bạn đã làm trong ví dụ trên không? . Đây là cách>>> 69Nó thật nhanh. Một dòng mã và 689 hiện là một danh sách cố định. Tuy nhiên, sử dụng 9 dường như không phải là giải pháp nhanh nhấtMột nhược điểm quan trọng của bất kỳ giải pháp nào ngụ ý nối là đằng sau hậu trường, mỗi bước trung gian sẽ tạo ra một danh sách mới. Điều này có thể khá lãng phí về mặt sử dụng bộ nhớ. Danh sách cuối cùng được trả về chỉ là danh sách được tạo gần đây nhất trong số tất cả các danh sách đã được tạo ở mỗi vòng nối. Thay vào đó, sử dụng tính năng hiểu danh sách đảm bảo rằng bạn chỉ tạo và trả về một danh sách >>> 0Phiên bản mới này của 684 hiệu quả hơn và ít lãng phí hơn về mặt sử dụng bộ nhớ. Tuy nhiên, cách hiểu lồng nhau có thể khó đọc và hiểuSử dụng 692 có lẽ là cách Pythonic dễ đọc và dễ đọc nhất để làm phẳng một danh sách các danh sách>>> 1Trong phiên bản 684 này, ai đó đang đọc mã của bạn có thể thấy rằng hàm này lặp lại sau mỗi 694 trong 685. Bên trong vòng lặp 8 đầu tiên này, nó lặp lại qua từng 697 trong 694 để cuối cùng điền vào danh sách 686 mới với 692. Cũng giống như cách hiểu trước đó, giải pháp này chỉ tạo một danh sách trong quy trình. Một lợi thế của giải pháp này là nó rất dễ đọcSử dụng các lựa chọn thay thế cho >>> def sum_numbers(numbers): .. if len(numbers) == 0: .. return 0 .. return numbers[0] + sum_numbers(numbers[1:]) ... >>> sum_numbers([1, 2, 3, 4, 5]) 15 9Như bạn đã học, 9 rất hữu ích khi làm việc với các giá trị số nói chung. Tuy nhiên, khi làm việc với các số dấu phẩy động, Python cung cấp một công cụ thay thế. Trong 03, bạn sẽ tìm thấy một hàm có tên là 04 có thể giúp bạn cải thiện độ chính xác chung của các phép tính dấu phẩy động của mìnhBạn có thể có một nhiệm vụ mà bạn muốn nối hoặc xâu chuỗi một số lần lặp lại để bạn có thể làm việc với chúng như một. Đối với tình huống này, bạn có thể xem chức năng của mô-đun 05 06Bạn cũng có thể có một nhiệm vụ mà bạn muốn nối một danh sách các chuỗi. Bạn đã học được trong hướng dẫn này rằng không có cách nào sử dụng 9 để nối các chuỗi. Chức năng này không được xây dựng để nối chuỗi. Cách thay thế Pythonic nhất là sử dụng 644Tính tổng các số dấu phẩy động. >>> def sum_numbers(numbers): .. if len(numbers) == 0: .. return 0 .. return numbers[0] + sum_numbers(numbers[1:]) ... >>> sum_numbers([1, 2, 3, 4, 5]) 15 09Nếu mã của bạn liên tục tính tổng các số có dấu phẩy động bằng 9, thì bạn nên cân nhắc sử dụng 09 để thay thế. Hàm này thực hiện các phép tính dấu phẩy động cẩn thận hơn so với 9, giúp cải thiện độ chính xác của phép tính của bạnTheo tài liệu của nó, 04 “tránh mất độ chính xác bằng cách theo dõi nhiều tổng riêng phần trung gian. ” Tài liệu cung cấp ví dụ sau>>> 2Với 04, bạn sẽ nhận được kết quả chính xác hơn. Tuy nhiên, bạn nên lưu ý rằng 04 không giải quyết được lỗi biểu diễn trong số học dấu phẩy động. Ví dụ sau phát hiện ra giới hạn này>>> 3Trong các ví dụ này, cả hai hàm đều trả về cùng một kết quả. Điều này là do không thể biểu diễn chính xác cả hai giá trị 16 và 17 trong dấu phẩy động nhị phân>>> 4Tuy nhiên, không giống như 9, 04 có thể giúp bạn giảm lan truyền lỗi dấu phẩy động khi bạn cộng các số rất lớn và rất nhỏ lại với nhau>>> 5Ồ. Ví dụ thứ hai khá bất ngờ và đánh bại hoàn toàn 9. Với 9, kết quả là bạn nhận được 22. Điều này khác khá xa so với kết quả chính xác của ________ 023, khi bạn nhận được với ________ 004Loại bỏ các quảng cáoNối các Iterable với >>> def sum_numbers(numbers): .. if len(numbers) == 0: .. return 0 .. return numbers[0] + sum_numbers(numbers[1:]) ... >>> sum_numbers([1, 2, 3, 4, 5]) 15 25Nếu bạn đang tìm kiếm một công cụ hữu ích để ghép nối hoặc xâu chuỗi một loạt các lần lặp, thì hãy cân nhắc sử dụng 06 từ 05. Hàm này có thể nhận nhiều lần lặp và xây dựng một trình lặp tạo ra các mục từ mục đầu tiên, từ mục thứ hai, v.v. cho đến khi nó sử dụng hết tất cả các lần lặp đầu vào>>> 6Khi bạn gọi 06, bạn nhận được một trình vòng lặp của các mục từ các lần lặp đầu vào. Trong ví dụ này, bạn truy cập các mục liên tiếp từ 21 bằng cách sử dụng 30. Thay vào đó, nếu bạn muốn làm việc với một danh sách, thì bạn có thể sử dụng 31 để sử dụng trình vòng lặp và trả về một danh sách Python thông thường 06 cũng là một lựa chọn tốt để làm phẳng danh sách các danh sách trong Python>>> 7Để làm phẳng một danh sách gồm các danh sách có 06, bạn cần sử dụng toán tử giải nén lặp lại ( 34). Toán tử này giải nén tất cả các iterable đầu vào để 06 có thể làm việc với chúng và tạo iterator tương ứng. Bước cuối cùng là gọi 31 để xây dựng danh sách phẳng mong muốnNối chuỗi với >>> def sum_numbers(numbers): .. if len(numbers) == 0: .. return 0 .. return numbers[0] + sum_numbers(numbers[1:]) ... >>> sum_numbers([1, 2, 3, 4, 5]) 15 644Như bạn đã thấy, 9 không nối hoặc nối các chuỗi. Nếu bạn cần làm như vậy, thì công cụ ưa thích và nhanh nhất hiện có trong Python là 644. Phương thức này lấy một chuỗi các chuỗi làm đối số và trả về một chuỗi mới, được nối>>> 8Sử dụng 40 là cách Pythonic hiệu quả nhất để nối các chuỗi. Tại đây, bạn sử dụng danh sách các chuỗi làm đối số và tạo một chuỗi đơn từ đầu vào. Lưu ý rằng 40 sử dụng chuỗi mà bạn gọi phương thức này làm dấu tách trong quá trình nối. Trong ví dụ này, bạn gọi 40 trên một chuỗi bao gồm một ký tự khoảng trắng ( 43), vì vậy các chuỗi ban đầu từ 44 được phân tách bằng dấu cách trong chuỗi cuối cùng của bạnSự kết luậnGiờ đây, bạn có thể sử dụng hàm có sẵn của Python 9 để cộng nhiều giá trị số lại với nhau. Hàm này cung cấp một cách hiệu quả, dễ đọc và Pythonic để giải quyết các vấn đề tổng kết trong mã của bạn. Nếu bạn đang xử lý các phép tính toán yêu cầu tính tổng các giá trị số, thì 9 có thể là cứu cánh của bạnTrong hướng dẫn này, bạn đã học cách
Với kiến thức này, giờ đây bạn có thể cộng nhiều giá trị số lại với nhau theo cách Pythonic, dễ đọc và hiệu quả Đánh dấu là đã hoàn thành 🐍 Thủ thuật Python 💌 Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python Gửi cho tôi thủ thuật Python » Giới thiệu về Leodanis Pozo Ramos Leodanis là một kỹ sư công nghiệp yêu thích Python và phát triển phần mềm. Anh ấy là một nhà phát triển Python tự học với hơn 6 năm kinh nghiệm. Anh ấy là một nhà văn đam mê kỹ thuật với số lượng bài báo được xuất bản ngày càng tăng trên Real Python và các trang web khác » Tìm hiểu thêm về LeodanisMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là Aldren Bartosz Joanna Gia-cốp Sadie Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bậc thầy Kỹ năng Python trong thế giới thực Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bạn nghĩ sao? Đánh giá bài viết này Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì? Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi |