Hướng dẫn for if in one line python - for if in one line python

Tôi có một vấn đề với Python.

Tôi lập một danh sách đơn giản:

>>> my_list = ["one","two","three"]

Tôi muốn tạo một "mã dòng đơn" để tìm chuỗi.

Ví dụ: tôi có mã này:

>>> [(i) for i in my_list if i=="two"]
['two']

Nhưng khi tôi xem biến là sai (tôi tìm thấy giá trị cuối cùng của danh sách của mình):

>>> print i
three

Tại sao biến của tôi chứa phần tử cuối cùng chứ không phải phần tử mà tôi muốn tìm?

Hướng dẫn for if in one line python - for if in one line python

GBOFFI

20.6K6 Huy hiệu vàng54 Huy hiệu bạc83 Huy hiệu Đồng6 gold badges54 silver badges83 bronze badges

Hỏi ngày 15 tháng 9 năm 2015 lúc 7:47Sep 15, 2015 at 7:47

4

Bạn đang tạo một danh sách được lọc bằng cách sử dụng danh sách hiểu.

>>> print i
three
1 vẫn bị ràng buộc với từng yếu tố của danh sách đó và phần tử cuối cùng vẫn là
>>> print i
three
2, ngay cả khi sau đó nó được lọc ra khỏi danh sách được sản xuất.

Bạn không nên sử dụng danh sách hiểu để chọn một yếu tố. Chỉ cần sử dụng vòng lặp

>>> print i
three
3 và
>>> print i
three
4 để kết thúc nó:

for elem in my_list:
    if elem == 'two':
        break

Nếu bạn phải có một lớp lót (sẽ phản đối triết lý của Python, nơi có thể đọc được), hãy sử dụng hàm

>>> print i
three
5 và biểu thức máy phát:must have a one-liner (which would be counter to Python's philosophy, where readability matters), use the
>>> print i
three
5 function and a generator expression:

i = next((elem for elem in my_list if elem == 'two'), None)

sẽ đặt

>>> print i
three
1 thành
>>> print i
three
7 nếu không có phần tử phù hợp như vậy.

Trên đây không phải là một bộ lọc hữu ích; Về cơ bản, bạn đang thử nghiệm nếu giá trị

>>> print i
three
8 nằm trong danh sách. Bạn có thể sử dụng
>>> print i
three
9 cho điều đó:

elem = 'two' if 'two' in my_list else None

Đã trả lời ngày 15 tháng 9 năm 2015 lúc 7:51Sep 15, 2015 at 7:51

Martijn Pieters ♦ Martijn PietersMartijn Pieters

994K277 Huy hiệu vàng3915 Huy hiệu bạc3259 Huy hiệu đồng277 gold badges3915 silver badges3259 bronze badges

0

Khi bạn thực hiện

>>> [(i) for i in my_list if i=="two"]

>>> print i
three
1 được lặp lại thông qua danh sách
for elem in my_list:
    if elem == 'two':
        break
1. Khi danh sách hiểu kết thúc đánh giá,
>>> print i
three
1 được gán cho mục cuối cùng trong lặp, đó là
for elem in my_list:
    if elem == 'two':
        break
3.

Đã trả lời ngày 15 tháng 9 năm 2015 lúc 7:51Sep 15, 2015 at 7:51

Martijn Pieters ♦ Martijn PietersCong Ma

994K277 Huy hiệu vàng3915 Huy hiệu bạc3259 Huy hiệu đồng3 gold badges29 silver badges47 bronze badges

5

Khi bạn thực hiện

>>> print i
three
1 được lặp lại thông qua danh sách
for elem in my_list:
    if elem == 'two':
        break
1. Khi danh sách hiểu kết thúc đánh giá,
>>> print i
three
1 được gán cho mục cuối cùng trong lặp, đó là
for elem in my_list:
    if elem == 'two':
        break
3.

filtered =  [ i for i in my_list if i=='two']

Cong Macong Ma

try:
     m = next( i for i in my_list if i=='two' )
except StopIteration:
     m = None

10.2k3 Huy hiệu vàng29 Huy hiệu bạc47 Huy hiệu đồngSep 15, 2015 at 7:59

Trong danh sách hiểu, biến vòng lặp tôi trở thành toàn cầu. Sau khi lặp trong vòng lặp For, nó là một tham chiếu đến phần tử cuối cùng trong danh sách của bạn.desiato

Nếu bạn muốn tất cả các trận đấu thì hãy gán danh sách cho một biến:1 gold badge8 silver badges16 bronze badges

Nếu bạn chỉ muốn trận đấu đầu tiên, bạn có thể sử dụng trình tạo chức năng

  1. Đã trả lời ngày 15 tháng 9 năm 2015 lúc 7:59
my_list = [1, 2, 3]
[i for i in my_list if i==2]
  1. Desiatodesiato
>>> [(i) for i in my_list if i=="two"]
['two']
0

1.0421 Huy hiệu vàng8 Huy hiệu bạc16 Huy hiệu đồngJan 23 at 3:26

Câu trả lời ngắn:Jin

một vòng lặp với câu lệnh if1 silver badge4 bronze badges

Một vòng lặp với cả hai câu lệnh nếu và khác. Thật không may, cuối cùng chúng ta không thể đưa ra tuyên bố IF-Else như trên.

Đã trả lời ngày 23 tháng 1 lúc 3:26

>>> [(i) for i in my_list if i=="two"]
['two']
1

Jinjin

>>> [(i) for i in my_list if i=="two"]
['two']
2

Huy hiệu Bạc 911 Huy hiệu ĐồngSep 17, 2020 at 9:44

Hướng dẫn for if in one line python - for if in one line python

Trong Python3, biến tôi sẽ ra khỏi phạm vi khi bạn cố gắng in nó.

>>> [(i) for i in my_list if i=="two"]
['two']
3

Để có được giá trị bạn muốn, bạn nên lưu trữ kết quả hoạt động của bạn bên trong một biến mới:

>>> [(i) for i in my_list if i=="two"]
['two']
4

Sau đó, bạn sẽ nhận được đầu ra sauJul 5, 2020 at 4:21

1

Đã trả lời ngày 17 tháng 9 năm 2020 lúc 9:44

>>> [(i) for i in my_list if i=="two"]
['two']
5

Tìm thấy cái này:

Sẽ in:

>>> [(i) for i in my_list if i=="two"]
['two']
6

Đã trả lời ngày 5 tháng 7 năm 2020 lúc 4:21

Lý do nó in "ba" là vì bạn không xác định mảng của mình. Tương đương với những gì bạn đang làm là:

>>> [(i) for i in my_list if i=="two"]
['two']
7

Bạn đang yêu cầu yếu tố cuối cùng mà nó đã xem qua, đó không phải là những gì bạn nên làm. Bạn cần phải lưu trữ mảng đến một biến để có được phần tử.

Tiếng Anh tương đương với những gì bạn đang làm là:

>>> [(i) for i in my_list if i=="two"]
['two']
8

Lý do 'tôi' bằng với "ba" là vì ba là điều cuối cùng được định nghĩa là tôiJul 12, 2020 at 15:15

máy tính đã làm:

>>> [(i) for i in my_list if i=="two"]
['two']
9

Bởi vì bạn đã yêu cầu nó.

>>> print i
three
0

Nếu bạn muốn chỉ mục, hãy vào đây nếu bạn muốn các giá trị trong một mảng, hãy xác định mảng, như thế này:

Đã trả lời ngày 12 tháng 7 năm 2020 lúc 15:15Mar 31 at 23:38

Hướng dẫn for if in one line python - for if in one line python

Làm cách nào để làm nếu trong một dòng trong Python?

Một dòng các câu lệnh IF-Else trong Python viết một câu lệnh IF-OLSE một dòng trong Python là có thể bằng cách sử dụng toán tử ternary, còn được gọi là biểu thức có điều kiện. Điều này hoạt động tốt. Nhưng bạn có thể hoàn thành công việc bằng cách viết câu lệnh if-else như một biểu thức một lớp lót gọn gàng.using the ternary operator, also known as the conditional expression. This works just fine. But you can get the job done by writing the if-else statement as a neat one-liner expression.

Bạn có thể làm cho một vòng một dòng trong Python không?

Python cho vòng lặp được sử dụng để lặp lại theo một chuỗi như chuỗi, danh sách, tuple hoặc bất kỳ đối tượng có thể lặp lại nào khác như phạm vi.Chúng tôi có thể sử dụng nhiều cho các vòng lặp như chúng tôi muốn cùng với các điều kiện.Python cho phép chúng tôi viết cho các vòng lặp trong một dòng giúp mã của chúng tôi dễ đọc và chuyên nghiệp hơn.Python allows us to write for loops in one line which makes our code more readable and professional.

Bạn có thể làm một câu lệnh IF trong một dòng?

Một câu lệnh IF một dòng chỉ có nghĩa là bạn đang xóa dòng mới và thụt lề.Bạn vẫn đang viết cùng một mã, với sự thay đổi duy nhất là phải mất một dòng thay vì hai.Lưu ý: Câu lệnh IF One-line chỉ có thể nếu có một dòng mã theo điều kiện.One-line if statement is only possible if there's a single line of code following the condition.

Làm thế nào để bạn viết nhiều điều kiện nếu một dòng python?

Để đặt một câu lệnh if-then-else trong một dòng, hãy sử dụng toán tử ternary x của Python nếu c other y.Điều này trả về kết quả của biểu thức X nếu điều kiện Bolean C đánh giá là TRUE.Mặt khác, toán tử ternary trả về biểu thức thay thế y.use Python's ternary operator x if c else y . This returns the result of expression x if the Boolean condition c evaluates to True . Otherwise, the ternary operator returns the alternative expression y .