Hướng dẫn how do i make one line in python? - làm cách nào để tạo một dòng trong python?

Python One Line cho Loop [Một hướng dẫn đơn giản]

Python rất mạnh mẽ - bạn có thể ngưng tụ nhiều thuật toán thành một dòng mã Python duy nhất.

Vì vậy, câu hỏi tự nhiên đặt ra: Bạn có thể viết một vòng lặp trong một dòng mã duy nhất không?can you write a for loop in a single line of code?

Bài viết này khám phá câu hỏi quan trọng này trong tất cả các chi tiết.

Làm thế nào để viết một vòng lặp cho một dòng mã Python duy nhất?

Có hai cách viết một LOP cho Loop:

  • Phương pháp 1: Nếu cơ thể vòng lặp bao gồm một câu lệnh, chỉ cần viết câu lệnh này vào cùng một dòng:
    >>> for i in range(10): print(i)
    
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    3. Điều này in 10 số đầu tiên vào vỏ (từ 0 đến 9).
    : If the loop body consists of one statement, simply write this statement into the same line:
    >>> for i in range(10): print(i)
    
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    3. This prints the first 10 numbers to the shell (from 0 to 9).
  • Phương pháp 2: Nếu mục đích của vòng lặp là tạo danh sách, thay vào đó, hãy sử dụng danh sách hiểu biết:
    >>> for i in range(10): print(i)
    
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    4. Mã bình phương mười số đầu tiên và lưu trữ chúng trong danh sách
    >>> for i in range(10): print(i)
    
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    5.
    If the purpose of the loop is to create a list, use list comprehension instead:
    >>> for i in range(10): print(i)
    
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    4. The code squares the first ten numbers and stores them in the list
    >>> for i in range(10): print(i)
    
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    5.

Hãy để một cái nhìn về cả hai biến thể chi tiết hơn.

Nhưng trước khi chúng tôi tiếp tục, tôi đã hào hứng giới thiệu cho bạn cuốn sách Python Oneer mới của tôi, Python One-Liners (Amazon Link). (Amazon Link).

Nếu bạn thích một lớp lót, bạn sẽ yêu thích cuốn sách. Nó sẽ dạy cho bạn mọi thứ cần biết về một dòng mã Python duy nhất. Nhưng nó cũng là một phần giới thiệu về khoa học máy tính, khoa học dữ liệu, học máy và thuật toán. Vũ trụ trong một dòng Python duy nhất!single line of Python code. But it’s also an introduction to computer science, data science, machine learning, and algorithms. The universe in a single line of Python!

Hướng dẫn how do i make one line in python? - làm cách nào để tạo một dòng trong python?

Cuốn sách được phát hành vào năm 2020 với nhà xuất bản sách chương trình đẳng cấp thế giới Nostarch Press (San Francisco).

Liên kết: https://nostarch.com/pythononeliners

Quảng cáo đủ

Phương pháp 1: Dòng đơn cho vòng lặp

Chỉ cần viết vòng lặp cho một dòng duy nhất là cách trực tiếp nhất để hoàn thành nhiệm vụ. Rốt cuộc, Python không cần mức độ thụt vào để giải quyết sự mơ hồ khi cơ thể vòng lặp chỉ bao gồm một dòng.

Giả sử, chúng tôi muốn viết những điều sau đây cho vòng lặp trong một dòng mã:

>>> for i in range(10):
	print(i)

	
0
1
2
3
4
5
6
7
8
9

Chúng ta có thể dễ dàng thực hiện việc này bằng cách viết lệnh vào một dòng mã duy nhất:

>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9

Mặc dù câu trả lời này có vẻ đơn giản, câu hỏi thú vị là: chúng ta có thể viết một vòng lặp phức tạp hơn cho một thân vòng dài hơn trong một dòng không?can we write a more complex for loop that has a longer loop body in a single line?

Điều này khó khăn hơn nhiều. Mặc dù nó có thể ngưng tụ các thuật toán phức tạp trong một dòng mã duy nhất, nhưng không có công thức chung nào.

Nếu bạn quan tâm đến việc nén toàn bộ thuật toán vào một dòng mã duy nhất, hãy xem bài viết này với 10 lớp lót Python phù hợp với một tweet duy nhất.

Giả sử, bạn có vòng lặp phức tạp hơn sau:

for i in range(10):
    if i<5:
        j = i**2
    else:
        j = 0    
    print(j)

Điều này tạo ra đầu ra:

0
1
4
9
16
0
0
0
0
0

Chúng ta có thể nén nó thành một dòng không?

Câu trả lời là có! Kiểm tra đoạn mã sau:yes! Check out the following code snippet:

for i in range(10): print(i**2 if i<5 else 0)

Điều này tạo ra đầu ra giống như vòng lặp

>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
6 đa dòng của chúng tôi.

Hóa ra, chúng ta có thể sử dụng toán tử ternary trong Python cho phép chúng ta nén câu lệnh

>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
7 thành một dòng.

Kiểm tra hướng dẫn này trên blog của chúng tôi nếu bạn muốn tìm hiểu thêm về nhà điều hành ternary thú vị trong Python.

Toán tử ternary rất trực quan: chỉ cần đọc nó từ trái sang phải để hiểu ý nghĩa của nó.ternary operator is very intuitive: just read it from left to right to understand its meaning.

Trong thân vòng

>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
8, chúng tôi in số vuông
>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
9 nếu tôi nhỏ hơn 5, nếu không, chúng tôi in 0.

Hãy cùng khám phá một mẹo Python thay thế mà rất phổ biến trong số các bậc thầy Python:

Phương pháp 2: Danh sách hiểu biết

Bị ghét bởi những người mới, các lập trình viên Python có kinh nghiệm có thể sống mà không cần tính năng Python tuyệt vời này có tên là Danh sách Hiểu.

Giả sử, chúng tôi muốn tạo một danh sách các số bình phương. Cách truyền thống sẽ là viết một cái gì đó dọc theo những dòng sau:

squares = []

for i in range(10):
    squares.append(i**2)
    
print(squares)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Chúng tôi tạo một danh sách trống

>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
5 và liên tiếp thêm một số vuông khác bắt đầu từ 0 ** 2 và kết thúc trong 9 ** 2.

Do đó, kết quả là danh sách

for i in range(10):
    if i<5:
        j = i**2
    else:
        j = 0    
    print(j)
1.

Danh sách hiểu rằng điều này thành một dòng mã-đó cũng có thể đọc được, hiệu quả hơn và súc tích hơn.

print([i**2 for i in range(10)])

Dòng này hoàn thành cùng một đầu ra với ít bit hơn nhiều.

Một hướng dẫn kỹ lưỡng về sự hiểu biết danh sách có thể được tìm thấy tại tài nguyên blog minh họa này.

Ngoài ra, vui lòng xem video trong hướng dẫn hiểu danh sách của tôi:

Giới thiệu đơn giản về danh sách hiểu trong Python

Danh sách hiểu là một cách nhỏ gọn để tạo danh sách. Công thức đơn giản là

for i in range(10):
    if i<5:
        j = i**2
    else:
        j = 0    
    print(j)
2.

  • Biểu thức: Phải làm gì với mỗi yếu tố danh sách?What to do with each list element?
  • Bối cảnh: Những yếu tố danh sách nào để chọn? Nó bao gồm một số lượng tùy ý cho và nếu các câu lệnh.What list elements to select? It consists of an arbitrary number of for and if statements.

Phần đầu tiên là biểu thức. Trong ví dụ trên, đó là biểu thức

>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
9. Sử dụng bất kỳ biến nào trong biểu thức của bạn mà bạn đã xác định trong ngữ cảnh trong một câu lệnh LOOP. In the example above, it was the expression
>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
9. Use any variable in your expression that you have defined in the context within a loop statement.

Phần thứ hai là bối cảnh. Trong ví dụ trên, đó là biểu thức

for i in range(10):
    if i<5:
        j = i**2
    else:
        j = 0    
    print(j)
4. Bối cảnh bao gồm một số lượng tùy ý là
>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
6 và
>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
7. Mục tiêu duy nhất của bối cảnh là xác định (hoặc hạn chế) chuỗi các phần tử mà chúng tôi muốn áp dụng biểu thức.
. In the example above, it was the expression
for i in range(10):
    if i<5:
        j = i**2
    else:
        j = 0    
    print(j)
4. The context consists of an arbitrary number of
>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
6 and
>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
7 clauses. The single goal of the context is to define (or restrict) the sequence of elements on which we want to apply the expression.

Phương pháp 3: Python một dòng cho vòng lặp với IF

Bạn cũng có thể sửa đổi câu lệnh Hiểu danh sách bằng cách hạn chế ngữ cảnh bằng một câu lệnh

>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
7 khác:

Vấn đề: Giả sử, chúng tôi muốn tạo một danh sách các số bình phương, nhưng bạn chỉ xem xét và bỏ qua các số lẻ.: Say, we want to create a list of squared numbers—but you only consider even and ignore odd numbers.

Ví dụ: Cách đa lớp lót sẽ là như sau.: The multi-liner way would be the following.

squares = []

for i in range(10):
    if i%2==0:
        squares.append(i**2)
    
print(squares)
# [0, 4, 16, 36, 64]

Bạn tạo một danh sách trống

>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
5 và liên tiếp thêm một số vuông khác bắt đầu từ 0 ** 2 và kết thúc trong 8 ** 2, nhưng chỉ xem xét các số chẵn 0, 2, 4, 6, 8.

Do đó, kết quả là danh sách

for i in range(10):
    if i<5:
        j = i**2
    else:
        j = 0    
    print(j)
9.

Một lần nữa, bạn có thể sử dụng danh sách hiểu

0
1
4
9
16
0
0
0
0
0
0 với mệnh đề
>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
7 hạn chế (in đậm) trong phần ngữ cảnh để nén điều này trong một dòng mã Python duy nhất.

Xem ở đây:

print([i**2 for i in range(10) if i%2==0])
# [0, 4, 16, 36, 64]

Dòng này hoàn thành cùng một đầu ra với ít bit hơn nhiều.

Bài viết liên quan: Python One-line cho Loop với IF: Python One-Line For Loop With If

Câu hỏi liên quan

Hãy để đi sâu vào một số câu hỏi liên quan có thể xuất hiện trong đầu bạn.

Những gì một biểu thức máy phát điện?

Biểu thức máy phát là một công cụ đơn giản để tạo ra các trình lặp.

Nếu bạn sử dụng vòng lặp

>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
6, bạn thường lặp lại một lần lặp. Chẳng hạn, biểu thức trình tạo không tạo rõ ràng một danh sách trong bộ nhớ.

Thay vào đó, nó tự động tạo ra mục tiếp theo trong điều đó khi nó đi qua điều đó.

Chúng tôi đã sử dụng biểu thức trình tạo trong câu lệnh

0
1
4
9
16
0
0
0
0
0
3 ở trên:

print(i**2 if i<5 else 0)

Không có dấu ngoặc vuông xung quanh biểu thức máy phát vì nó là trường hợp của các toàn bộ danh sách.

Làm thế nào để tạo một vòng lặp cho vòng lặp trong một dòng?

Chúng ta không thể viết một chiếc lồng nhau đơn giản cho vòng lặp trong một dòng của Python.

Giả sử, bạn muốn viết một vòng lặp

>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
6 lồng nhau như sau trong một dòng mã Python:

>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
0

Khi cố gắng ghi nó vào một dòng mã duy nhất, chúng tôi sẽ gặp lỗi cú pháp:

>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
1

Bạn có thể thấy thông báo lỗi trong ảnh chụp màn hình sau:

Hướng dẫn how do i make one line in python? - làm cách nào để tạo một dòng trong python?

Tuy nhiên, chúng ta có thể tạo một tuyên bố hiểu danh sách lồng nhau.

>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
2

Điều này chỉ dẫn đến một phần bối cảnh phức tạp hơn một chút

0
1
4
9
16
0
0
0
0
0
5. Nhưng nó có thể quản lý được.

Đi đâu từ đây

Biết các thủ thuật một lớp nhỏ Python như hiểu biết danh sách và các vòng lặp

>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9
6 là rất quan trọng cho sự thành công của bạn trong ngôn ngữ Python. Mọi lập trình viên chuyên gia đều biết họ bằng trái tim, sau tất cả, đây là điều làm cho họ rất năng suất.

Nếu bạn muốn học ngôn ngữ Python theo trái tim, hãy tham gia khóa học email Python miễn phí của tôi.

Nó có 100% dựa trên các tờ Cheat Python và bài học Python miễn phí. Nó rất vui, dễ dàng, và bạn có thể rời đi bất cứ lúc nào.

Cuốn sách Python One-Liners: Master The Single Line đầu tiên!

Các lập trình viên Python sẽ cải thiện các kỹ năng khoa học máy tính của họ với các lớp lót hữu ích này.

Hướng dẫn how do i make one line in python? - làm cách nào để tạo một dòng trong python?

Python One-Linerswill dạy bạn cách đọc và viết một bộ bài viết: Các câu nói ngắn gọn về chức năng hữu ích được đóng gói thành một dòng mã. Bạn sẽ học cách giải nén một cách có hệ thống và hiểu bất kỳ dòng mã Python nào và viết python được nén mạnh mẽ, mạnh mẽ như một chuyên gia.concise statements of useful functionality packed into a single line of code. You’ll learn how to systematically unpack and understand any line of Python code, and write eloquent, powerfully compressed Python like an expert.

Cuốn sách năm chương bao gồm (1) mẹo và thủ thuật, (2) biểu thức thông thường, (3) học máy, (4) chủ đề khoa học dữ liệu cốt lõi và (5) thuật toán hữu ích.

Giải thích chi tiết về một lớp lót giới thiệu các khái niệm khoa học máy tính quan trọng và tăng cường kỹ năng mã hóa và phân tích của bạn. Bạn có thể tìm hiểu về các tính năng Python nâng cao như hiểu danh sách, cắt lát, chức năng Lambda, biểu thức thông thường, bản đồ và giảm các chức năng và bài tập cắt lát.key computer science concepts and boost your coding and analytical skills. You’ll learn about advanced Python features such as list comprehension, slicing, lambda functions, regular expressions, map and reduce functions, and slice assignments.

Bạn cũng sẽ học cách:

  • Tận dụng các cấu trúc dữ liệu để giải quyết các vấn đề trong thế giới thực, như sử dụng lập chỉ mục Boolean để tìm các thành phố có ô nhiễm trên trung bìnhsolve real-world problems, like using Boolean indexing to find cities with above-average pollution
  • Sử dụng những điều cơ bản của Numpy như mảng, hình dạng, trục, loại, phát sóng, lập chỉ mục nâng cao, cắt lát, sắp xếp, tìm kiếm, tổng hợp và thống kêNumPy basics such as array, shape, axis, type, broadcasting, advanced indexing, slicing, sorting, searching, aggregating, and statistics
  • Tính toán số liệu thống kê cơ bản của các mảng dữ liệu đa chiều và các thuật toán có nghĩa K để học tập không giám sátstatistics of multidimensional data arrays and the K-Means algorithms for unsupervised learning
  • Tạo các biểu thức chính quy nâng cao hơn bằng cách sử dụng nhóm nhóm và các nhóm được đặt tên, Lookahead tiêu cực, ký tự thoát, không gian trắng, bộ ký tự (và bộ ký tự tiêu cực) và các toán tử tham lam/nongreedyadvanced regular expressions using grouping and named groups, negative lookaheads, escaped characters, whitespaces, character sets (and negative characters sets), and greedy/nongreedy operators
  • Hiểu được một loạt các chủ đề khoa học máy tính, bao gồm các phương pháp, palindromes, supersets, hoán vị, giai thừa, số nguyên tố, số fibonacci, obfuscation, tìm kiếm và phân loại thuật toáncomputer science topics, including anagrams, palindromes, supersets, permutations, factorials, prime numbers, Fibonacci numbers, obfuscation, searching, and algorithmic sorting

Đến cuối cuốn sách, bạn sẽ biết cách viết Python ở tinh tế nhất và tạo ra những tác phẩm nghệ thuật Python Python ngắn gọn, đẹp đẽ chỉ trong một dòng.write Python at its most refined, and create concise, beautiful pieces of “Python art” in merely a single line.

Nhận Python Oneer của bạn trên Amazon !!

Lập trình viên hài hước - Blockchain

Hướng dẫn how do i make one line in python? - làm cách nào để tạo một dòng trong python?
Các blockchains giống như những cái móc vật lộn, trong đó nó cực kỳ tuyệt vời khi bạn gặp phải một vấn đề mà họ là giải pháp phù hợp, nhưng nó xảy ra quá hiếm khi trong cuộc sống thực. Nguồn - XKCDsource – xkcd

Hướng dẫn how do i make one line in python? - làm cách nào để tạo một dòng trong python?

Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.

Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com.Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer (Nostarch 2020), đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.

Niềm đam mê của ông là viết, đọc và mã hóa.Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ.Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.