Làm thế nào để bạn chọn một chuỗi từ danh sách trong python?
Chương trước chúng ta đã giới thiệu các kiểu dựng sẵn của Python là >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!0, >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!1 và >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!2, và chúng ta đã tình cờ gặp được >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!3 Show
Số nguyên và số float là các kiểu số, có nghĩa là chúng chứa các số. Chúng ta có thể sử dụng các toán tử số mà chúng ta đã thấy ở chương trước với chúng để tạo các biểu thức số. Trình thông dịch Python sau đó có thể đánh giá các biểu thức này để tạo ra các giá trị số, làm cho Python trở thành một máy tính rất mạnh Các chuỗi, danh sách và bộ dữ liệu đều là các loại trình tự, được gọi như vậy vì chúng hoạt động giống như một trình tự - một tập hợp các đối tượng được sắp xếp theo thứ tự Các loại chuỗi khác nhau về chất so với các loại số vì chúng là các loại dữ liệu phức hợp - nghĩa là chúng được tạo thành từ các phần nhỏ hơn. Trong trường hợp chuỗi, chúng được tạo thành từ các chuỗi nhỏ hơn, mỗi chuỗi chứa một ký tự. Ngoài ra còn có chuỗi rỗng, không chứa ký tự nào cả Trong trường hợp danh sách hoặc bộ dữ liệu, chúng được tạo thành từ các phần tử, là giá trị của bất kỳ kiểu dữ liệu Python nào, bao gồm các danh sách và bộ dữ liệu khác Danh sách được đặt trong dấu ngoặc vuông ( >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!4 và >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!5) và bộ giá trị trong dấu ngoặc đơn ( >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!6 và >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!7) Một danh sách không chứa phần tử nào được gọi là danh sách rỗng và một bộ không có phần tử nào được gọi là một bộ trống ________số 8 Ví dụ đầu tiên là danh sách năm số nguyên và tiếp theo là danh sách ba chuỗi. Thứ ba là một bộ chứa bốn số nguyên, tiếp theo là một bộ chứa bốn chuỗi. Cái cuối cùng là một danh sách chứa ba bộ dữ liệu, mỗi bộ chứa một cặp chuỗi Tùy thuộc vào những gì chúng tôi đang làm, chúng tôi có thể muốn coi một loại dữ liệu phức hợp là một thứ duy nhất hoặc chúng tôi có thể muốn truy cập các phần của nó. Sự mơ hồ này là hữu ích Ghi chú Có thể bỏ dấu ngoặc đơn khi chỉ định bộ và chỉ sử dụng danh sách giá trị được phân tách bằng dấu phẩy >>> thing = 2, 4, 6, 8 >>> type(thing) Ngoài ra, bắt buộc phải bao gồm dấu phẩy khi chỉ định một bộ chỉ có một phần tử >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!0 Ngoại trừ trường hợp của bộ dữ liệu trống, nó thực sự là dấu phẩy, không phải dấu ngoặc đơn, cho Python biết đó là bộ dữ liệu 3. 2. Làm việc với các phần của chuỗiCác loại trình tự chia sẻ một tập hợp các hoạt động chung 3. 2. 1. Lập chỉ mụcToán tử lập chỉ mục ( >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!4 >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!5) chọn một phần tử từ một chuỗi. Biểu thức bên trong ngoặc được gọi là chỉ mục và phải là một giá trị nguyên. Chỉ mục cho biết phần tử nào cần chọn, do đó tên của nó >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!3 Biểu thức >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!40 chọn ký tự có chỉ số >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!41 từ >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!42 và tạo một chuỗi mới chỉ chứa một ký tự này, mà bạn có thể ngạc nhiên khi thấy đó là >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!43 Bạn có thể mong đợi để xem >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!44, nhưng các nhà khoa học máy tính thường bắt đầu đếm từ số không, không phải một. Hãy nghĩ về chỉ mục như những con số trên thước đo số lượng phần tử bạn đã di chuyển vào chuỗi ngay từ đầu. Cả thước kẻ và chỉ số đều bắt đầu từ >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!45 3. 2. 2. Chiều dàiChap trước các bạn đã thấy hàm >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!46 dùng để lấy số ký tự trong một chuỗi >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!1 Với danh sách và bộ dữ liệu, >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!46 trả về số lượng phần tử trong chuỗi >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!3 3. 2. 3. Truy cập phần tử ở cuối chuỗiThông thường trong lập trình máy tính cần truy cập các phần tử ở cuối chuỗi. Bây giờ bạn đã thấy hàm >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!46, bạn có thể muốn thử một cái gì đó như thế này >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR! Điều đó sẽ không làm việc. Nó gây ra lỗi thời gian chạy >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!49. Lý do là vì >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!70 trả về số phần tử trong danh sách, 16, nhưng không có phần tử nào ở vị trí chỉ mục 16 trong >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!71 Kể từ khi chúng tôi bắt đầu đếm từ số 0, mười sáu chỉ số được đánh số từ 0 đến 15. Để lấy phần tử cuối cùng, chúng ta phải trừ 1 từ độ dài >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!4 Đây là một mẫu phổ biến đến mức Python cung cấp một ký hiệu viết tay ngắn cho nó, lập chỉ mục phủ định, đếm ngược từ cuối chuỗi Biểu thức >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!72 mang lại phần tử cuối cùng, >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!73 mang lại phần tử thứ hai cho đến cuối cùng, v.v. >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!7 3. 2. 4. Truyền tải và vòng lặp >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR! 74Rất nhiều tính toán liên quan đến việc xử lý một chuỗi một phần tử tại một thời điểm. Mẫu phổ biến nhất là bắt đầu từ đầu, chọn lần lượt từng phần tử, thực hiện thao tác nào đó với phần tử đó và tiếp tục cho đến khi kết thúc. Mô hình xử lý này được gọi là truyền tải Vòng lặp >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!74 của Python giúp việc truyền tải dễ dàng diễn đạt >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!5 Ghi chú Chúng ta sẽ thảo luận về vòng lặp chi tiết hơn trong chương tiếp theo. Bây giờ chỉ cần lưu ý rằng dấu hai chấm (. ) ở cuối dòng đầu tiên và thụt đầu dòng trên dòng thứ hai đều bắt buộc để câu lệnh này đúng về mặt cú pháp 3. 3. ______276Khi vòng lặp >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!74 tiêu chuẩn đi qua một chuỗi, nó sẽ gán từng giá trị trong chuỗi cho biến vòng lặp theo thứ tự xảy ra trong chuỗi. Đôi khi, thật hữu ích khi có cả giá trị và chỉ mục của từng phần tử. Hàm >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!76 cung cấp cho chúng ta điều này >>> thing = 2, 4, 6, 8 >>> type(thing)0 3. 3. 1. Lát cắtMột dãy con của một dãy được gọi là một lát cắt và thao tác trích xuất một dãy con được gọi là cắt. Giống như lập chỉ mục, chúng tôi sử dụng dấu ngoặc vuông ( >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!4 >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!5) làm toán tử lát, nhưng thay vì một giá trị số nguyên bên trong, chúng tôi có hai giá trị, được phân tách bằng dấu hai chấm ( >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!51) >>> thing = 2, 4, 6, 8 >>> type(thing)1 Toán tử >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!52 trả về một phần của chuỗi từ phần tử thứ n đến phần tử thứ m, bao gồm phần tử đầu tiên nhưng không bao gồm phần tử cuối cùng. Hành vi này là phản trực giác; Nếu bạn bỏ qua chỉ mục đầu tiên (trước dấu hai chấm), thì lát bắt đầu ở đầu chuỗi. Nếu bạn bỏ qua chỉ mục thứ hai, lát cắt sẽ đi đến cuối chuỗi. Như vậy >>> thing = 2, 4, 6, 8 >>> type(thing)2 Bạn nghĩ >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!53 có nghĩa là gì? Chỉ mục tiêu cực cũng được cho phép, vì vậy >>> thing = 2, 4, 6, 8 >>> type(thing)3 Mẹo Phát triển một sự hiểu biết vững chắc về cách thức hoạt động của việc cắt lát là rất quan trọng. Tiếp tục tạo “thí nghiệm” của riêng bạn với các chuỗi và lát cho đến khi bạn có thể dự đoán một cách nhất quán kết quả của thao tác cắt trước khi chạy nó Khi bạn cắt một chuỗi, chuỗi con kết quả luôn có cùng loại với chuỗi mà từ đó nó được dẫn xuất. Điều này thường không đúng với lập chỉ mục, ngoại trừ trường hợp chuỗi >>> thing = 2, 4, 6, 8 >>> type(thing)4 Mặc dù các thành phần của danh sách (hoặc bộ) có thể thuộc bất kỳ loại nào, bất kể bạn cắt nó như thế nào, một lát của danh sách là một danh sách 3. 3. 2. Toán tử >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR! 55Toán tử >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!55 trả về liệu một phần tử đã cho có được chứa trong danh sách hay bộ dữ liệu hay không >>> thing = 2, 4, 6, 8 >>> type(thing)5 >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!55 hoạt động hơi khác với chuỗi. Nó đánh giá là >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!58 nếu một chuỗi là chuỗi con của chuỗi khác >>> thing = 2, 4, 6, 8 >>> type(thing)6 Lưu ý rằng một chuỗi là chuỗi con của chính nó và chuỗi trống là chuỗi con của bất kỳ chuỗi nào khác. (Cũng lưu ý rằng các lập trình viên máy tính muốn suy nghĩ khá cẩn thận về các trường hợp cạnh này. ) >>> thing = 2, 4, 6, 8 >>> type(thing)7 3. 4. Đối tượng và phương thứcCác chuỗi, danh sách và bộ dữ liệu là các đối tượng, có nghĩa là chúng không chỉ chứa các giá trị mà còn có các hành vi tích hợp được gọi là các phương thức, tác động lên các giá trị trong đối tượng Hãy xem xét một số phương thức chuỗi đang hoạt động để xem nó hoạt động như thế nào >>> thing = 2, 4, 6, 8 >>> type(thing)8 Bây giờ chúng ta hãy học cách mô tả những gì chúng ta vừa thấy. Mỗi chuỗi trong các ví dụ trên được theo sau bởi toán tử dấu chấm, tên phương thức và danh sách tham số, có thể trống Trong ví dụ đầu tiên, chuỗi >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!59 được theo sau bởi toán tử dấu chấm và sau đó là phương thức >>> thing = 2, 4, 6, 8 >>> type(thing)00, phương thức này có danh sách tham số trống. Chúng ta nói rằng phương thức “ >>> thing = 2, 4, 6, 8 >>> type(thing)00 được gọi trên chuỗi, >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!59. Gọi phương thức gây ra một hành động diễn ra bằng cách sử dụng giá trị mà phương thức được gọi. Hành động tạo ra kết quả, trong trường hợp này là giá trị chuỗi >>> thing = 2, 4, 6, 8 >>> type(thing)03. Chúng ta nói rằng phương thức >>> thing = 2, 4, 6, 8 >>> type(thing)00 trả về chuỗi >>> thing = 2, 4, 6, 8 >>> type(thing)03 khi nó được gọi trên (hoặc được gọi trên) chuỗi >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!59 Trong ví dụ thứ tư, phương thức >>> thing = 2, 4, 6, 8 >>> type(thing)07 (một lần nữa với danh sách tham số trống) được gọi trên chuỗi >>> thing = 2, 4, 6, 8 >>> type(thing)08. Vì mỗi ký tự trong chuỗi đại diện cho một chữ số, phương thức >>> thing = 2, 4, 6, 8 >>> type(thing)07 trả về giá trị boolean >>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0] >>> last = seq[len(seq)] # ERROR!58. Gọi >>> thing = 2, 4, 6, 8 >>> type(thing)07 trên >>> thing = 2, 4, 6, 8 >>> type(thing)12 tạo ra >>> thing = 2, 4, 6, 8 >>> type(thing)13 >>> thing = 2, 4, 6, 8 >>> type(thing)14 loại bỏ khoảng trắng ở đầu và cuối 3. 5. Hàm >>> thing = 2, 4, 6, 8
>>> type(thing)
|