Giới thiệu qua về chuỗi, số, list trong Python

Trong phần trước, chúng ta đã làm quen với chương trình Python đầu tiên là thêm hai số và in tổng của chúng ra ngoài màn hình. Phần này, bạn sẽ học cách sử dụng Python như một chiếc máy tính, học về số, chuỗi, list và đi bước đầu tiên hướng tới lập trình Python. Hãy chắc chắn bạn đã lưu lại trang Tài liệu Python này để cập nhật những bài mới nhất nhé.

1. Sử dụng Python như một máy tính

Hãy thử vài lệnh Python đơn giản dưới đây, bắt đầu trình thông dịch và đợi dấu nhắc chính xuất hiện, nó không quá lâu đâu.

1.1. Số

Trình thông dịch hoạt động như một máy tính đơn giản: Bạn có thể nhập vào một phép tính và nó sẽ viết ra giá trị. Cú pháp biểu thức khá đơn giản: các toán tử như +, -, * và / làm việc giống như trong hầu hết các ngôn ngữ lập trình khác (Pascal, C), dấu ngoặc đơn () có thể được sử dụng để nhóm. Ví dụ:

<span class="gp"> </span><span class="mi">2</span> <span class="o">+</span> <span class="mi">2</span> <span class="go">4</span> <span class="gp"> </span><span class="mi">50</span> <span class="o">-</span> <span class="mi">5</span><span class="o">*</span><span class="mi">6</span> <span class="go">20</span> <span class="gp"> </span><span class="p">(</span><span class="mi">50</span> <span class="o">-</span> <span class="mi">5</span><span class="o">*</span><span class="mi">6</span><span class="p">)</span> <span class="o">/</span> <span class="mi">4</span> <span class="go">5.0</span> <span class="gp"> </span><span class="mi">8</span> <span class="o">/</span> <span class="mi">5</span> <span class="c1"># phép chia luôn trả về một số dạng thập phân với dấu chấm</span> <span class="go">1.6</span>

Số nguyên (ví dụ như 2, 4, 20) có kiểu int, số dạng thập phân (như 5.0, 1.6) có kiểu float. Chúng ta sẽ thấy thêm về các kiểu số trong những bài hướng dẫn sau.

Phép chia (/) luôn luôn trả về kiểu float. Để thực hiện phép chia lấy phần nguyên (loại bỏ các số sau dấu thập phân) bạn có thể sử dụng toán tử //; để tính phần dư thì sử dụng % như ví dụ dưới đây:

 Với Python, bạn có thể sử dụng toán tử ** để tính số mũ:

<span class="gp"> </span><span class="mi">5</span> <span class="o">**</span> <span class="mi">2</span> <span class="c1"># 5 bình phương</span> <span class="go">25</span> <span class="gp"> </span><span class="mi">2</span> <span class="o">**</span> <span class="mi">7</span> <span class="c1"># 2 mũ 7</span> <span class="go">128</span>

Dấu bằng = được sử dụng để gán giá trị cho 1 biến. Sau đó, không có kết quả nào được hiển thị trước dấu nhắc lệnh tiếp theo:

<span class="gp"> </span><span class="n">width</span> <span class="o">=</span> <span class="mi">20</span> <span class="gp"> </span><span class="n">height</span> <span class="o">=</span> <span class="mi">5</span> <span class="o">*</span> <span class="mi">9</span> <span class="gp"> </span><span class="n">width</span> <span class="o">*</span> <span class="n">height</span> <span class="go">900</span>

Nếu một biến không được định nghĩa (gán giá trị), cố gắng sử dụng biến đó, bạn sẽ nhận được lỗi sau:

<span class="gp"> </span><span class="n">n</span> <span class="c1"># bạn đang cố truy cập vào biến n chưa được gán giá trị</span> <span class="gt">Traceback (most recent call last):</span> File <span class="nb">"<stdin>"</span>, line <span class="m">1</span>, in <span class="n"><module></span> <span class="gr">NameError</span>: <span class="n">name 'n' is not defined</span>

Python hỗ trợ đầy đủ cho dấu chấm động, phép tính có cả số nguyên và số thập phân thì kết quả sẽ trả về số dưới dạng thập phân (nguyên văn: toán tử với toán hạng kiểu hỗn hợp chuyển đổi toán hạng số nguyên sang số thập phân):

<span class="gp"> </span><span class="mi">4</span> <span class="o">*</span> <span class="mf">3.75</span> <span class="o">-</span> <span class="mi">1</span> <span class="go">14.0</span>

Trong chế độ tương tác, biểu thức được in ra cuối cùng sẽ được gán cho biến _, giúp dễ dàng thực hiện các phép tính tiếp theo hơn. Ví dụ:

<span class="gp"> </span><span class="n">tax</span> <span class="o">=</span> <span class="mf">12.5</span> <span class="o">/</span> <span class="mi">100</span> <span class="gp"> </span><span class="n">price</span> <span class="o">=</span> <span class="mf">100.50</span> <span class="gp"> </span><span class="n">price</span> <span class="o">*</span> <span class="n">tax</span> <span class="go">12.5625</span> <span class="gp"> </span><span class="n">price</span> <span class="o">+</span> <span class="n">_</span> <span class="go">113.0625</span> <span class="gp"> </span><span class="nb">round</span><span class="p">(</span><span class="n">_</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> <span class="go">113.06</span>

Bạn nên coi biến này là read-only, đừng gán giá trị cho nó - vì nếu tạo ra một biến cùng tên nó sẽ chiếm mất biến mặc định này và không còn làm được những thứ hay ho như trên nữa.

Ngoài intfloat, Python hỗ trợ thêm 2 loại số nữa là DecimalFraction. Python cũng hỗ trợ số phức và sử dụng hậu tố j hoặc J để chỉ phần ảo. Ví dụ: 3+5j

1.2. Chuỗi (string)

Bên cạnh số, Python cũng có thể thao tác với chuỗi, được biểu diễn bằng nhiều cách. Chúng có thể được để trong dấu nháy đơn ('...') hoặc kép ('...') với cùng một kết quả. được sử dụng để 'trốn' 2 dấu nháy này.

<span class="gp"> </span><span class="s1">'spam eggs'</span> <span class="c1"># dấu nháy đơn</span> <span class="go">'spam eggs'</span> <span class="gp"> </span><span class="s1">'doesn</span><span class="se">'</span><span class="s1">t'</span> <span class="c1"># sử dụng ' để viết dấu nháy đơn...</span> <span class="go">"doesn't"</span> <span class="gp"> </span><span class="s2">"doesn't"</span> <span class="c1"># ...hoặc sử dụng dấu nháy kép</span> <span class="go">"doesn't"</span> <span class="gp"> </span><span class="s1">'"Yes," he said.'</span> <span class="go">'"Yes," he said.'</span> <span class="gp"> </span><span class="s2">"</span><span class="se">"</span><span class="s2">Yes,</span><span class="se">"</span><span class="s2"> he said."</span> <span class="go">'"Yes," he said.'</span> <span class="gp"> </span><span class="s1">'"Isn</span><span class="se">'</span><span class="s1">t," she said.'</span> <span class="go">'"Isn't," she said.'</span>

Trong trình thông dịch tương tác, chuỗi kết quả bao gồm phần trong dấu ngoặc kép và các ký tự đặc biệt 'trốn' được nhờ sử dụng . Dù đầu ra trông có vẻ hơi khác với đầu vào (dấu nháy kèm theo có thể thay đổi) nhưng hai chuỗi này là tương đương. Chuỗi được viết trong dấu ngoặc kép khi chuỗi chứa dấu nháy đơn và không có dấu nháy kép), ngược lại nó sẽ được viết trong dấu nháy đơn. Hàm print() tạo chuỗi đầu ra dễ đọc hơn, bằng cách bỏ qua dấu nháy kèm theo và in các ký tự đặc biệt, đã 'trốn' được dấu nháy:

<span class="gp"> </span><span class="s1">'"Isn</span><span class="se">'</span><span class="s1">t," she said.'</span> <span class="go">'"Isn't," she said.'</span> <span class="gp"> </span><span class="nb">print</span><span class="p">(</span><span class="s1">'"Isn</span><span class="se">'</span><span class="s1">t," she said.'</span><span class="p">)</span> <span class="go">"Isn't," she said.</span> <span class="gp"> </span><span class="n">s</span> <span class="o">=</span> <span class="s1">'First line.</span><span class="se">n</span><span class="s1">Second line.'</span> <span class="c1"># n nghĩa là dòng mới</span> <span class="gp"> </span><span class="n">s</span> <span class="c1"># không có print(), n sẽ được viết trong kết quả đầu ra</span> <span class="go">'First line.nSecond line.'</span> <span class="gp"> </span><span class="nb">print</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="c1"># có print(), n sẽ tạo ra dòng mới</span> <span class="go">First line.</span> <span class="go">Second line.</span>

Nếu không muốn các ký tự được thêm vào bởi được trình thông dịch hiểu là ký tự đặc biệt thì sử dụng chuỗi raw bằng cách thêm r vào trước dấu nháy đầu tiên:  

<span class="gp"> </span><span class="nb">print</span><span class="p">(</span><span class="s1">'C:some</span><span class="se">n</span><span class="s1">ame'</span><span class="p">)</span> <span class="c1"># ở đây n là dòng mới!</span> <span class="go">C:some</span> <span class="go">ame</span> <span class="gp"> </span><span class="nb">print</span><span class="p">(</span><span class="sa">r</span><span class="s1">'C:somename'</span><span class="p">)</span> <span class="c1"># thêm r trước dấu nháy</span> <span class="go">C:somename</span>

Chuỗi ký tự dạng chuỗi có thể viết trên nhiều dòng bằng cách sử dụng 3 dấu nháy: '''...''' hoặc '''...'''. Kết thúc dòng tự động bao gồm trong chuỗi, nhưng có thể ngăn chặn điều này bằng cách thêm vào cuối dòng. Ví dụ:

<span class="nb">print</span><span class="p">(</span><span class="s2">"""</span><span class="se"></span> <span class="s2">Usage: thingy [OPTIONS]</span> <span class="s2"> -h Display this usage message</span> <span class="s2"> -H hostname Hostname to connect to</span> <span class="s2">"""</span><span class="p">)</span>

Đây là kết quả (dòng mới ban đầu không được tính):

 

Các chuỗi có thể được nối với nhau bằng toán tử + và thay thế bằng *:

<span class="gp"> </span><span class="c1"># thêm 3 'un' vào sau 'ium'</span> <span class="gp"> </span><span class="mi">3</span> <span class="o">*</span> <span class="s1">'un'</span> <span class="o">+</span> <span class="s1">'ium'</span> <span class="go">'unununium'</span>

Hai hoặc nhiều ký tự dạng chuỗi (tức là ký tự trong dấu nháy) cạnh nhau được nối tự động.

<span class="gp"> </span><span class="s1">'Py'</span> <span class="s1">'thon'</span> <span class="go">'Python'</span>

Tính năng trên chỉ làm việc với chuỗi dạng chuỗi (literal), không áp dụng với biến hay biểu thức:

<span class="gp"> </span><span class="n">prefix</span> <span class="o">=</span> <span class="s1">'Py'</span> <span class="gp"> </span><span class="n">prefix</span> <span class="s1">'thon'</span> <span class="c1"># không thể nối một biến với một chuỗi</span> <span class="go"> ...</span> <span class="go">SyntaxError: invalid syntax</span> <span class="gp"> </span><span class="p">(</span><span class="s1">'un'</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span> <span class="s1">'ium'</span> <span class="go"> ...</span> <span class="go">SyntaxError: invalid syntax</span>

Nếu muốn ghép nối các biến với nhau hoặc biến với chuỗi hãy sử dụng dấu +:

<span class="gp"> </span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'thon'</span> <span class="go">'Python'</span>

Tính năng này đặc biệt hữu ích khi muốn bẻ các chuỗi dài thành chuỗi ngắn hơn:

<span class="gp"> </span><span class="n">text</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Put several strings within parentheses '</span> <span class="gp">... </span> <span class="s1">'to have them joined together.'</span><span class="p">)</span> <span class="gp"> </span><span class="n">text</span> <span class="go">'Put several strings within parentheses to have them joined together.'</span>

Các chuỗi có thể được lập chỉ mục với ký tự đầu tiên được đánh số 0. Không có kiểu ký tự riêng biệt, mỗi ký tự đơn giản là một con số:

<span class="gp"> </span><span class="n">word</span> <span class="o">=</span> <span class="s1">'Python'</span> <span class="gp"> </span><span class="n">word</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># ký tự ở vị trí số 0</span> <span class="go">'P'</span> <span class="gp"> </span><span class="n">word</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="c1"># ký tự ở vị trí số 5</span> </code><span class="go"><code>'n'</code>
Chỉ số cũng có thể là số âm, bắt đầu đếm từ bên phải:
</span></pre> [code]<span class="gp"> </span><span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="c1"># last character</span> <span class="go">'n'</span> <span class="gp"> </span><span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># second-last character</span> <span class="go">'o'</span> <span class="gp"> </span><span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">6</span><span class="p">]</span> <span class="go">'P'</span>

Lưu ý rằng vì -0 cũng tương tự như 0, nên các chỉ số âm bắt đầu từ -1.

Ngoài việc đánh số, thì cắt lát cũng được hỗ trợ. Trong khi index được sử dụng để lấy các ký tự riêng lẻ thì cắt lát sẽ cho phép bạn lấy chuỗi con:

<span class="gp"> </span><span class="n">word</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># các ký tự từ vị trí 0 (bao gồm) đến 2 (loại trừ)</span> <span class="go">'Py'</span> <span class="gp"> </span><span class="n">word</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> <span class="c1"># các ký tự từ vị trí 2 (bao gồm) đến 5 (loại trừ)</span> <span class="go">'tho'</span>

Hãy để ý đến cách các ký tự được giữ lại và loại trừ. Nó luôn đảm bảo rằng s[:i] + s[i:] bằng s:

<span class="gp"> </span><span class="n">word</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="n">word</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span> <span class="go">'Python'</span> <span class="gp"> </span><span class="n">word</span><span class="p">[:</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="n">word</span><span class="p">[</span><span class="mi">4</span><span class="p">:]</span> <span class="go">'Python'</span>

Các chỉ số trong cắt chuỗi có thiết lập mặc định khá hữu ích, có 2 chỉ số bị bỏ qua theo mặc định, là 0 và kích thước của chuỗi được cắt.

<span class="gp"> </span><span class="n">word</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># các ký tự từ đầu đến vị trí thứ 2 (loại bỏ)</span> <span class="go">'Py'</span> <span class="gp"> </span><span class="n">word</span><span class="p">[</span><span class="mi">4</span><span class="p">:]</span> <span class="c1"># các ký tự từ vị trí thứ 4(lấy) đến hết</span> <span class="go">'on'</span> <span class="gp"> </span><span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">:]</span> <span class="c1"># các ký tự thứ hai tính từ cuối lên (lấy) đến hết</span> <span class="go">'on'</span>

 Một cách khác để ghi nhớ cách thức cắt chuỗi làm việc là hình dung các chỉ số như là vách ngăn giữa các ký tự, với ký tự ngoài cùng bên trái được đánh số 0. Khi đó, ký tự cuối cùng bên phải, trong chuỗi n ký tự sẽ có chỉ số n, ví dụ:

 <span class="o">+---+---+---+---+---+---+</span> <span class="o">|</span> <span class="n">P</span> <span class="o">|</span> <span class="n">y</span> <span class="o">|</span> <span class="n">t</span> <span class="o">|</span> <span class="n">h</span> <span class="o">|</span> <span class="n">o</span> <span class="o">|</span> <span class="n">n</span> <span class="o">|</span> <span class="o">+---+---+---+---+---+---+</span> <span class="mi">0</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span> <span class="o">-</span><span class="mi">6</span> <span class="o">-</span><span class="mi">5</span> <span class="o">-</span><span class="mi">4</span> <span class="o">-</span><span class="mi">3</span> <span class="o">-</span><span class="mi">2</span> <span class="o">-</span><span class="mi">1</span>

Hàng đầu tiên của số mang đến vị trí của chỉ số từ 0 đến 6 trong chuỗi. Hàng thứ hai là các chỉ số âm tương ứng. Khi cắt từ i đến j sẽ bao gồm tất cả các ký tự nằm giữa i và j, tương ứng.

Đối với các chỉ số không âm, chiều dài của một lát cắt là sự chênh lệch của các chỉ số, nếu cả hai đều nằm trong giới hạn. Ví dụ, chiều dài của word[1:3] là 2.

Cố gắng sử dụng một chỉ mục quá lớn sẽ trả về kết quả lỗi:

<span class="gp"> </span><span class="n">word</span><span class="p">[</span><span class="mi">42</span><span class="p">]</span> <span class="c1"># từ chỉ có 6 ký tự</span> <span class="gt">Traceback (most recent call last):</span> File <span class="nb">"<stdin>"</span>, line <span class="m">1</span>, in <span class="n"><module></span> <span class="gr">IndexError</span>: <span class="n">string index out of range</span>

Tuy nhiên, các chỉ mục bên ngoài phạm vi lát cắt vẫn được xử lý gọn gàng khi được sử dụng để cắt:

word[4:42] # cắt ký tự từ vị trí thứ 4 đến 42

'on'

word[42:] # cắt ký tự sau vị trí 42

''

Các chuỗi Python không thể thay đổi - chúng là cố định. Vì vậy, nếu cứ cố tình gán một ký tự nào đó cho vị trí đã được lập chỉ mục thì bạn sẽ nhận được thông báo lỗi:

<span class="gp"> </span><span class="n">word</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'J'</span> <span class="go"> ...</span> <span class="go">TypeError: 'str' object does not support item assignment</span> <span class="gp"> </span><span class="n">word</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span> <span class="o">=</span> <span class="s1">'py'</span> <span class="go"> ...</span> <span class="go">TypeError: 'str' object does not support item assignment</span>

Nếu cần một chuỗi khác, cách tốt nhất là tạo mới:

<span class="gp"> </span><span class="s1">'J'</span> <span class="o">+</span> <span class="n">word</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="go">'Jython'</span> <span class="gp"> </span><span class="n">word</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'py'</span> <span class="go">'Pypy'</span>

Hàm len() được tích hợp trong Python, sẽ trả về độ dài của chuỗi:

<span class="gp"> </span><span class="n">s</span> <span class="o">=</span> <span class="s1">'supercalifragilisticexpialidocious'</span> <span class="gp"> </span><span class="nb">len</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="go">34</span>

1.3. Danh sách

Python biết một số loại dữ liệu phức hợp, được sử dụng để nhóm các giá trị khác nhau. Đa năng nhất là danh sách (list). Một danh sách được biểu diễn bằng dãy các giá trị, được phân tách nhau bằng dấu phẩy, nằm trong dấu []. Các danh sách có thể chứa nhiều mục với kiểu khác nhau, nhưng thông thường là các mục có cùng kiểu. 

<span class="gp"> </span><span class="n">squares</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">9</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">25</span><span class="p">]</span> <span class="gp"> </span><span class="n">squares</span> <span class="go">[1, 4, 9, 16, 25]</span>

Giống như chuỗi (và các kiểu dữ liệu dạng chuỗi tuần tự (sequence type) khác), list có thể được đánh số và cắt lát:

squares[0] # lập chỉ mục trả về một mục 1 squares[-1] 25 squares[-3:] # cắt list trả về một list mới [9, 16, 25]

Mọi hành động cắt list đều trả về list mới chứa những yếu tố được yêu cầu. Nếu thực hiện hành động cắt sau thì nó sẽ trả về một list mới là bản sao của list ban đầu:

<span class="gp"> </span><span class="n">squares</span><span class="p">[:]</span> <span class="go">[1, 4, 9, 16, 25]</span>

List cũng hỗ trợ các hoạt động như nối list:

<span class="gp"> </span><span class="n">squares</span> <span class="o">+</span> <span class="p">[</span><span class="mi">36</span><span class="p">,</span> <span class="mi">49</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="mi">81</span><span class="p">,</span> <span class="mi">100</span><span class="p">]</span> <span class="go">[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]</span>

Không giống như chuỗi, bị gán cố định, list là kiểu dữ liệu có thể thay đổi. Ví dụ, bạn có thể thay đổi các mục trong list:

cubes = [1, 8, 27, 65, 125] # có vẻ sai sai 4 ** 3 # lập phương của 4 là 64, không phải 65! 64 cubes[3] = 64 # thay thế giá trị sai cubes [1, 8, 27, 64, 125]

Bạn cũng có thể cho thêm mục mới vào cuối list bằng cách sử dụng các phương thức, chẳng hạn như append():

<span class="gp"> </span><span class="n">cubes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">216</span><span class="p">)</span> <span class="c1"># thêm lập phương của 6</span> <span class="gp"> </span><span class="n">cubes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">7</span> <span class="o">**</span> <span class="mi">3</span><span class="p">)</span> <span class="c1"># và lập phương của 7</span> <span class="gp"> </span><span class="n">cubes</span> <span class="go">[1, 8, 27, 64, 125, 216, 343]</span>

Việc gán cho lát cũng có thể thực hiện và thậm chí có thể thay đổi cả kích thước của list hay xóa nó hoàn toàn:

<span class="gp"> </span><span class="n">letters</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'a'</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">,</span> <span class="s1">'c'</span><span class="p">,</span> <span class="s1">'d'</span><span class="p">,</span> <span class="s1">'e'</span><span class="p">,</span> <span class="s1">'f'</span><span class="p">,</span> <span class="s1">'g'</span><span class="p">]</span> <span class="gp"> </span><span class="n">letters</span> <span class="go">['a', 'b', 'c', 'd', 'e', 'f', 'g']</span> <span class="gp"> </span><span class="c1"># thay thế vài giá trị</span> <span class="gp"> </span><span class="n">letters</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'C'</span><span class="p">,</span> <span class="s1">'D'</span><span class="p">,</span> <span class="s1">'E'</span><span class="p">]</span> <span class="gp"> </span><span class="n">letters</span> <span class="go">['a', 'b', 'C', 'D', 'E', 'f', 'g']</span> <span class="gp"> </span><span class="c1"># giờ thì xóa chúng</span> <span class="gp"> </span><span class="n">letters</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> <span class="gp"> </span><span class="n">letters</span> <span class="go">['a', 'b', 'f', 'g']</span> <span class="gp"> </span><span class="c1"># xóa list bằng cách thay tất cả các phần tử bằng một list rỗng</span> <span class="gp"> </span><span class="n">letters</span><span class="p">[:]</span> <span class="o">=</span> <span class="p">[]</span> <span class="gp"> </span><span class="n">letters</span> <span class="go">[]</span>

Hàm len() cũng có thể áp dụng với list:

<span class="gp"> </span><span class="n">letters</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'a'</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">,</span> <span class="s1">'c'</span><span class="p">,</span> <span class="s1">'d'</span><span class="p">]</span> <span class="gp"> </span><span class="nb">len</span><span class="p">(</span><span class="n">letters</span><span class="p">)</span> <span class="go">4</span>

Bạn cũng có thể tạo các danh sách lồng nhau (danh sách chứa trong danh sách), ví dụ:

<span class="gp"> </span><span class="n">a</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'a'</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">,</span> <span class="s1">'c'</span><span class="p">]</span> <span class="gp"> </span><span class="n">n</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]</span> <span class="gp"> </span><span class="n">x</span> <span class="o">=</span> <span class="p">[</span><span class="n">a</span><span class="p">,</span> <span class="n">n</span><span class="p">]</span> <span class="gp"> </span><span class="n">x</span> <span class="go">[['a', 'b', 'c'], [1, 2, 3]]</span> <span class="gp"> </span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="go">['a', 'b', 'c']</span> <span class="gp"> </span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="go">'b'</span>

2.  Bước đầu tiên hướng tới lập trình

Tất nhiên, chúng ta có thể sử dụng Python cho những tác vụ phức tạp hơn là thêm vài phần tử vào chuỗi. Ví dụ, có thể viết một chuỗi con của dãy Fibonacci (dãy vô hạn các số tự nhiên bắt đầu bằng hai phần tử 0 và 1 hoặc 1 và 1, các phần tử sau đó được thiết lập bằng cách cộng hai phần tử trước nó lại) như sau:

# Dãy Fibonacci: ... # tổng của hai phần tử tạo nên phần tử tiếp theo ... a, b = 0, 1 while b < 10: ...  print(b) ...  a, b = b, a+b ... 1 1 2 3 5 8

Ví dụ này giới thiệu một số tính năng mới:

<span class="gp"> </span><span class="n">i</span> <span class="o">=</span> <span class="mi">256</span><span class="o">*</span><span class="mi">256</span> <span class="gp"> </span><span class="nb">print</span><span class="p">(</span><span class="s1">'The value of i is'</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span> <span class="go">The value of i is 65536</span>

Có thể sử dụng thêm đối số end cho hàm print() để tránh thêm dòng mới trong kết quả đầu ra hoặc kết thúc kết quả với một chuỗi khác:

<span class="gp"> </span><span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span> <span class="gp"> </span><span class="k">while</span> <span class="n">b</span> <span class="o"><</span> <span class="mi">1000</span><span class="p">:</span> <span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s1">','</span><span class="p">)</span> <span class="gp">... </span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="o">+</span><span class="n">b</span> <span class="gp">...</span> <span class="go">1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,</span>

Đến đây các bạn đã bắt đầu hình dung được phần nào về Python rồi đúng không? Hãy cùng chờ đón những bài học tiếp theo về các câu lệnh, cấu trức dữ liệu trong Python nhé. Bài trước: Tìm hiểu chương trình Python đầu tiên

TIN LIÊN QUAN

Lệnh pass trong python

Trong bài trước bạn đã biết cách dùng lệnh continue và lệnh break trong Python để thay đổi vòng lặp. Trong phần này chúng ta sẽ tiếp tục một lệnh khác, lệnh pass trong Python, dùng như một placeholder (trình giữ chỗ) cho việc thực thi các hàm, vòng

Tìm hiểu chương trình Python đầu tiên

Trong bài viết này chúng ta cùng tìm hiểu một chương trình Python đơn giản để có cái nhìn rõ hơn một chút về Python, trước khi bắt đầu học về các thành phần chính của ngôn ngữ lập trình này nhé.

Cách cài đặt Python trên Windows, macOS, Linux

Để bắt đầu làm quen với Python, trước tiên bạn cần cài đặt Python trên máy tính đang dùng, có thể là Windows, macOS hoặc Linux. Dưới đây là hướng dẫn cài đặt Python trên máy tính, cụ thể cho từng hệ điều hành.

Python là gì?Tại sao nên chọn Python?

Python là ngôn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, được tạo ra bởi Guido van Rossum. Python dễ dàng để tìm hiểu và đang nổi lên như một trong những ngôn ngữ lập trình nhập môn tốt nhất cho người lần đầu tiếp xúc với ngôn ngữ lập trình.

Hơn 100 bài tập Python có lời giải(code mẫu )

Hơn 100 bài tập Python kèm code mẫu được anh chàng zhiwehu chia sẻ trên Github, tuy nhiên, lời giải của loạt bài tập này được viết trên phiên bản Python đã cũ. Sau đây Quản Trị Mạng sẽ Việt hóa và chỉnh sửa để phù hợp với bản Python 3.x giúp các bạn

Những vấn đề cần nắm bắt khi bắt đầu học lập trình máy tính

Lập trình thật vui và vô cùng hữu dụng. Với lập trình, bạn sẽ được thỏa sức sáng tạo cùng nhiều cơ hội việc làm rộng mở. Nếu muốn học cách lập trình, hãy đọc chỉ dẫn dưới đây để nắm được nơi bạn cần đi và những gì mà bạn cần học.

Cách viết chữ gây ấn tượng trên Facebook

Chúng ta thường thấy một số bài viết trên Facebook có những phông chữ rất ấn tượng, trong khi đó phần soạn thảo của Facebook thì không có tính năng chỉnh sửa font chữ. Bạn muốn viết chữ gạch chân trên Facebook , hoặc chữ in đậm, in nghiêng trên

THỦ THUẬT HAY

Xem bạn bè đã truy cập những gì khi mượn smartphone của bạn và cách khắc phục

Đây cũng là một cách để bạn có thể biết được bạn bè đã truy cập những gì khi mượn smartphone của bạn. Nhưng mình nghĩ không nên áp dụng cách này đối với những thiết bị của người khác, bởi như vậy là vi phạm sự riêng tư

Cách đọc tin nhắn đã ẩn trên Zalo mà không cần mã PIN cực kỳ hay ho

Tin nhắn ẩn trên Zalo cho phép ẩn đi cuộc trò chuyện bất kỳ và cần nhập mã PIN để đọc được tin nhắn. Sau đây là cách đọc tin nhắn đã ẩn trên Zalo mà không cần mã PIN nhé!

Khắc phục lỗi xem trộm ảnh iPhone 6s chạy iOS 9.3.1

Mới vài ngày trước, Apple vừa tung ra bản cập nhật iOS 9.3.1 nhằm khắc phục lỗi rất khó chịu khiến người dùng không thể mở đường link nào trên các ứng dụng mặc định như Safari, Messages.

Tổng hợp các cách cập nhật ứng dụng trên iPhone

Bạn là người lần đầu tiên sử dụng iPhone, bạn muốn cập nhật các ứng dụng trên iPhone nhưng lại không biết cách. Hãy theo dõi bài viết dưới đây, sẽ giới thiệu bạn các cách để có thể cập nhật ứng dụng trên iPhone. Cùng

Tự động phát lại Video trên YouTube: Không chỉ 1 mà có hẳn 4 cách

YouTube là kênh chia sẻ video hàng đầu thế giới, với đầy đủ các thể loại từ giải trí cho tới học hành. Hầu như bất cứ thể loại nào bạn cần tìm kiếm, YouTube đều cung cấp.

ĐÁNH GIÁ NHANH

Đánh giá OPPO A83: màn hình 18:9, camera selfie có AI, chip Helio P23, giá 5 triệu

Máy có thiết kế gọn nhưng lại dùng nhựa giả kim. Với nhiều người, họ vẫn khó lòng chấp nhận 1 chiếc máy 5tr lại làm từ nhựa khi có hàng đống máy kim loại khác.

Đánh giá chi tiết ASUS ZenFone 4 Max Pro: Chỉ cách ngôi vương 1 bước chân

Camera kép đang trở thành một trong những cuộc đua giữa các nhà sản xuất. Nhưng điều đó chỉ mới xảy ra ở phân khúc máy cao cấp, còn việc một chiếc điện thoại sở hữu camera kép với mức giá dưới 5 triệu đồng là một điều