× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Printing list trong Python - 10 mẹo và thủ thuật

09/02/2023 01:29

HÀM PRINT() của Python là một hàm tích hợp cần thiết và điều quan trọng là phải sử dụng cùng với CÁC DANH SÁCH Python . Nếu bạn đã có một số kiến ​​thức về cấu trúc dữ liệu Python, đây là một số mẹo và thủ thuật về cách in danh sách bằng Python.

HÀM PRINT() của Python là một hàm tích hợp cần thiết và điều quan trọng là phải sử dụng cùng với CÁC DANH SÁCH Python .

Nếu bạn đã có một số kiến ​​thức về cấu trúc dữ liệu Python, đây là một số mẹo và thủ thuật về cách in danh sách bằng Python.

Hơn 10 cách để in danh sách bằng Python

1. In danh sách bằng *

Để in danh sách bằng toán tử *, bạn có thể sử dụng hàm PRINT() như sau:

print(*list_name)

Thao tác này sẽ in các phần tử của danh sách được phân tách bằng dấu cách, giống như khi bạn sử dụng print()hàm có nhiều đối số. Ví dụ:

pokemon_list = ['Pikachu''Abra''Charmander']
print(*pokemon_list)

Điều này sẽ in:

Pikachu Abra Charmander

Bạn cũng có thể sử dụng *toán tử để giải nén danh sách khi gọi một hàm nhận nhiều đối số:

def print_pokemon(pokemon1, pokemon2, pokemon3):
   print(pokemon1)
   print(pokemon2)
   print(pokemon3)
   
print_pokemon(*pokemon_list)

Điều này sẽ xuất ra:

Pikachu
Abra
Charmander

2. In một danh sách trong một dòng

Cũng có thể in danh sách trong một dòng mã bằng cú pháp sau:

print(item for item in list_name)

Để làm như vậy, bạn có thể sử dụng biểu thức trình tạo bên trong print()hàm.

Biểu thức trình tạo tương tự như khả năng hiểu danh sách, nhưng nó trả về một đối tượng trình tạo tạo ra từng giá trị một (thay vì tạo một danh sách mới). Các biểu thức trình tạo và khả năng hiểu danh sách là CÁC LỚP LÓT PYTHON - tức là chúng là các chương trình Python một dòng.

Đây là một ví dụ về cách bạn có thể sử dụng biểu thức trình tạo để in danh sách Python:

pokemon_list = ['Pikachu''Abra''Charmander']

Thao tác này sẽ in các phần tử của danh sách được phân tách bằng dấu cách, giống như khi bạn sử dụng print()hàm có nhiều đối số:

Pikachu Abra Charmander

Bạn cũng có thể sử dụng một biểu thức trình tạo để giải nén danh sách khi gọi một hàm nhận nhiều đối số. Ví dụ:

def print_pokemon(pokemon1, pokemon2, pokemon3):
   print(pokemon1)
   print(pokemon2)
   print(pokemon3)
 
print_pokemon(*(item for item in pokemon_list))

Đầu ra:

Pikachu
Abra
Charmander

Hãy nhớ rằng các biểu thức trình tạo thường được sử dụng khi bạn chỉ cần lặp lại các giá trị một lần; chúng không được lưu trữ trong bộ nhớ như danh sách. Nếu bạn cần truy cập các giá trị của danh sách nhiều lần, việc sử dụng KHẢ NĂNG HIỂU DANH SÁCH hoặc lưu trữ các giá trị trong danh sách có thể hiệu quả hơn.

3. In danh sách Python có dấu phân cách giữa các mục

Để in danh sách có dấu phân cách giữa các mục danh sách, bạn có thể sử dụng khả năng hiểu danh sách bên trong một print()hàm:

print(*[item + '\n' for item in pokemon_list])

Ký tự xuống dòng \nở cuối mỗi phần tử đảm bảo mỗi phần tử sẽ in trên một dòng riêng biệt:

Pikachu
 Abra
 Charmander

Hãy nhớ rằng bạn có thể sử dụng bất kỳ chuỗi nào làm dấu tách, không chỉ ký tự xuống dòng. Ví dụ: để in danh sách bằng Python có dấu phẩy và khoảng trắng giữa mỗi phần tử, bạn có thể sử dụng cú pháp sau:

print(*[item + ', ' for item in pokemon_list])

Nó trở lại:

Pikachu,  Abra,  Charmander,

Lưu ý rằng phần tử cuối cùng sẽ có dấu phẩy và khoảng trắng sau nó, điều này có thể khác với những gì bạn muốn.

4. In danh sách bằng Python mà không có dấu phân cách ở cuối

Để tránh cạm bẫy này, bạn có thể sử dụng một ifcâu lệnh bên trong phần hiểu danh sách để chỉ thêm dấu phân cách sau các phần tử không nằm cuối danh sách. Đây là giao diện của nó:

print(*[item + (', ' if i < len(pokemon_list)-1 else '') for i, item in enumerate(pokemon_list)])

Đầu ra:

Pikachu,  Abra,  Charmander

Để in một danh sách có dấu phân cách giữa các mục trong danh sách nhưng không có dấu phân cách ở cuối, bạn cũng có thể sử dụng print()hàm với đối số từ khóa sep:

print(*pokemon_list, sep=', ')

Điều này sẽ in các phần tử được phân tách bằng dấu phẩy và khoảng trắng:

Pikachu, Abra, Charmander

Lưu ý rằng print()hàm tự động thêm khoảng trắng sau mỗi phần tử nên bạn không cần đưa nó vào chuỗi dấu phân cách.

Tương tự như những gì tôi đã đề cập trước đây, bạn có thể sử dụng bất kỳ chuỗi nào làm dấu phân cách, chẳng hạn như dấu gạch ngang:

print(*pokemon_list, sep='-')

Điều này sẽ in:

Pikachu-Abra-Charmander

Hãy nhớ rằng sepđối số từ khóa chỉ ảnh hưởng đến dấu phân cách giữa các phần tử, không ảnh hưởng đến các ký tự được in sau phần tử cuối cùng.

Giả sử bạn muốn chặn khoảng trắng được thêm tự động sau phần tử cuối cùng. Trong trường hợp đó, bạn có thể sử dụng endđối số từ khóa để chỉ định một chuỗi khác sẽ được in sau chuỗi cuối cùng:

print(*pokemon_list, sep=', ', end='')

Điều này sẽ in:

Pikachu, Abra, Charmander

5. In danh sách Python bằng phép nối

Để in danh sách bằng phương thức join() trong Python, bạn có thể sử dụng cú pháp sau:

print(separator.join(list_name))

Điều này sẽ nối các phần tử danh sách với separatorchuỗi giữa chúng. Ví dụ: để in danh sách các pokemon được phân tách bằng dấu phẩy và dấu cách, bạn có thể thực hiện như sau:

print(', '.join(pokemon_list))

Điều này sẽ in:

Pikachu, Abra, Charmander

Nếu bạn muốn thêm một chuỗi vào trước hoặc sau danh sách, bạn có thể sử dụng +toán tử để nối các chuỗi:

print('Pokemons: ' + ', '.join(pokemon_list))

Điều này sẽ in:

Pokemons: Pikachu, Abra, Charmander

6. Chuyển đổi và in danh sách

Để in một danh sách bằng cách chuyển đổi nó thành một CHUỖI TRONG PYTHON , bạn có thể sử dụng str()hàm:

print(str(pokemon_list))

Điều này sẽ in danh sách dưới dạng một chuỗi, với các phần tử được phân tách bằng dấu phẩy và được đặt trong dấu ngoặc vuông:

['Pikachu''Abra''Charmander']

Tiếp theo, hãy khám phá cách in danh sách Python trong khi lập chỉ mục các phần tử danh sách.

7. In và lập chỉ mục danh sách Python

Để in các mục của một danh sách cùng với chỉ mục của chúng, bạn có thể sử dụng hàm ENUMERATE() của Python với một forvòng lặp:

for i, pokemon in enumerate(pokemon_list):
   print(i, pokemon)

Điều này sẽ xuất ra:

0 Pikachu
1 Abra
2 Charmander

Hàm enumerate()trả về một trình vòng lặp tạo ra các bộ chứa chỉ mục và giá trị của từng phần tử trong danh sách. Bạn có thể sử dụng một forvòng lặp để lặp lại các bộ dữ liệu này và in chỉ mục và giá trị của từng phần tử.

Sử dụng một biến thể của cách trước đây chúng tôi đã thực hiện định dạng chuỗi, chúng tôi có thể tùy chỉnh cách in chỉ mục và giá trị. Ví dụ:

for i, pokemon in enumerate(pokemon_list):
    print('{}: {}'.format(i, pokemon))

Điều này sẽ xuất ra:

0: Pikachu
1: Abra
2: Charmander

Bạn cũng có thể sử dụng khả năng hiểu danh sách để tạo danh sách chuỗi mới với chỉ mục và giá trị được định dạng của từng phần tử, sau đó sử dụng print()hàm để in danh sách:

result = ['{}: {}'.format(i, pokemon) for i, pokemon in enumerate(pokemon_list)]
print(result)

Điều này sẽ xuất ra:

['0: Pikachu''1: Abra''2: Charmander']

Hãy nhớ rằng enumerate()hàm trả về chỉ mục của mỗi phần tử bắt đầu từ 0. Nếu bạn muốn chỉ mục bắt đầu từ một giá trị khác, bạn có thể chuyển nó làm đối số của hàm. Ví dụ:

for i, pokemon in enumerate(pokemon_list, 1):
   print('{}: {}'.format(i, pokemon))

Điều này sẽ xuất ra:

1: Pikachu
2: Abra
3: Charmander

8. In hai danh sách Python cùng nhau

Để in hai danh sách cùng nhau, với các phần tử của mỗi danh sách được xen kẽ, bạn cần LẶP QUA NHIỀU DANH SÁCH . Với mục đích này, bạn có thể sử dụng forvòng lặp và zip()hàm.

Hàm zip()trả về một trình vòng lặp tạo ra các bộ chứa các phần tử ở vị trí tương ứng của chúng trong danh sách. Bạn có thể sử dụng VÒNG LẶP PYTHON để lặp lại các bộ dữ liệu này và in các phần tử của mỗi danh sách.

Đây là một ví dụ:

= ['a1''a2''a3']
= ['b1''b2''b3']
for x, y in zip(a, b):
    print(x, y)

Điều này sẽ xuất ra:

a1 b1
a2 b2
a3 b3

Bạn cũng có thể sử dụng khả năng hiểu danh sách để tạo một danh sách mới với các phần tử được xen kẽ và sau đó sử dụng print()hàm để in danh sách đó:

= ['a1''a2''a3']
= ['b1''b2''b3']
result = [x + for x, y in zip(a, b)]
print(result)

Điều này sẽ xuất ra:

['a1b1''a2b2''a3b3']

Điều quan trọng cần nhớ là zip()hàm sẽ chỉ lặp qua các phần tử của danh sách cho đến khi hết danh sách ngắn nhất. Nếu các danh sách có độ dài khác nhau, các phần tử của danh sách dài hơn sẽ không được đưa vào đầu ra. Ví dụ:

= ['a1''a2''a3']
= ['b1''b2']
for x, y in zip(a, b):
    print(x, y)

Điều này sẽ trở lại:

a1 b1
a2 b2

Nếu bạn muốn bao gồm tất cả các thành phần của danh sách dài hơn, bạn có thể đệm danh sách ngắn hơn bằng các giá trị Không có bằng cách sử dụng itertools.zip_longest()hàm từ itertoolsmô-đun. Ví dụ:

import itertools
 
= ['a1''a2''a3']
= ['b1''b2']
 
for x, y in itertools.zip_longest(a, b):
    print(x, y)

Điều này sẽ xuất ra:

a1 b1
a2 b2
a3 None

9. In danh sách Python lồng nhau

Để in một danh sách lồng nhau trong Python, bạn có thể sử dụng một vòng lặp để lặp qua các phần tử của danh sách bên ngoài, sau đó sử dụng một vòng lặp khác để lặp lại các phần tử của (các) danh sách bên trong. Ví dụ:

nested_list = [[123], [456], [789]]
 
for sublist in nested_list:
   for item in sublist:
       print(item)

Điều này sẽ xuất ra:

1
2
3
4
5
6
7
8
9

Chúng tôi cũng có thể in từng danh sách trong các dòng riêng biệt:

We can also print each list in separate lines:
>>> nested_list = [[123], [456], [789]]
>>> for sublist in nested_list:
...     print(*sublist, sep=",")

Điều này sẽ trở lại:

1,2,3
4,5,6
7,8,9

Tiếp theo, chúng ta có thể sử dụng khả năng hiểu danh sách để tạo một danh sách mới với các phần tử của danh sách lồng nhau và sau đó sử dụng print()hàm để in danh sách:

nested_list = [[123], [456], [789]]
result = [item for sublist in nested_list for item in sublist]

Điều này sẽ xuất ra:

[123456789]

Các danh sách rất mạnh mẽ và CŨNG CÓ THỂ ĐƯỢC KẾT HỢP VỚI CÁC BỘ và các cấu trúc dữ liệu Python khác.

10+. Luôn có nhiều hơn…

Dưới đây là một số cách khác để in danh sách trong Python:

  • Sử dụng vòng lặp for và range()hàm:
for in range(len(pokemon_list)):
   print(pokemon_list[i])

Điều này sẽ xuất ra:

Pikachu
Abra
Charmander
  • Một tùy chọn khác là sử dụng pprintmô-đun, cung cấp pprint()chức năng cho các danh sách in đẹp và các cấu trúc dữ liệu khác:
import pprint
 
pokemon_list = ['Pikachu''Abra''Charmander']
 
pprint.pprint(pokemon_list)

Điều này sẽ xuất ra:

['Pikachu''Abra''Charmander']
  • Cũng có thể sử dụng jsonmô-đun cung cấp dumps()chức năng có thể chuyển đổi danh sách thành JSONchuỗi:
import json
 
pokemon_list = ['Pikachu''Abra''Charmander']
 
print(json.dumps(pokemon_list))

Điều này sẽ xuất ra:

["Pikachu""Abra""Charmander"]
  • Cuối cùng nhưng không kém phần quan trọng, bạn cũng có thể sử dụng f-stringstính năng này (có sẵn trong Python 3.6 trở lên). Tính năng này cho phép bạn nhúng các biểu thức bên trong các ký tự chuỗi bằng cách sử dụng {}trình giữ chỗ:
for pokemon in pokemon_list:
   print(f'{pokemon} is a pokemon')

Điều này sẽ xuất ra:

Pikachu is a pokemon
Abra is a pokemon
Charmander is a pokemon