Hướng dẫn how do you return multiple values from a loop in python? - làm thế nào để bạn trả về nhiều giá trị từ một vòng lặp trong python?

Có cách nào để trả về nhiều kết quả mà không cần phải tạo một tuple trống, thêm từng lần lặp vào nó và trả lại tuple?

Tôi chỉ muốn thoát khỏi sự trả lại ngầm None ở cuối vòng lặp.

from random import randint

class Lotto(object):
    def fir_num(self):
        print("First prize:")
        num = randint(000000, 999999)
        return "%06d" % num           #no problem for single value

    def sec_num(self):
        print("Second prizes:")
        i = 0
        while i <= 5:
            i += 1
            num = randint(000000, 999999)
            print("%06d" % num)       #if uses "return", the function returns only one result

L = Lotto()
print(L.fir_num())
print(L.sec_num())

Hướng dẫn how do you return multiple values from a loop in python? - làm thế nào để bạn trả về nhiều giá trị từ một vòng lặp trong python?

Mike Müller

79,9K18 Huy hiệu vàng157 Huy hiệu bạc160 Huy hiệu đồng18 gold badges157 silver badges160 bronze badges

Hỏi ngày 30 tháng 12 năm 2016 lúc 5:10Dec 30, 2016 at 5:10

Hướng dẫn how do you return multiple values from a loop in python? - làm thế nào để bạn trả về nhiều giá trị từ một vòng lặp trong python?

1

Bạn chỉ có thể trả lại một lần từ một hàm. Vì vậy, điều tốt nhất sẽ là thu thập kết quả của bạn trong một danh sách và trả lại danh sách:

from random import randint

def sec_num(count=5):
    return [randint(0, 999999) for _ in range(count)]

for num in sec_num():
    print("%06d" % num)

Output:

710690

572131
292748

Có vẻ như bạn không truy cập self. Do đó, bạn không cần một lớp học cho trường hợp bạn hiển thị trong ví dụ của mình. Đi với chức năng đơn giản dường như thích hợp hơn ở đây.

Nếu bạn có nhiều giá thứ hai, hãy nói một triệu hoặc hơn, bạn có thể làm cho chức năng của mình hiệu quả hơn bằng cách sử dụng yield. Điều này sẽ biến chức năng của bạn thành một trình tạo. Đây là một khái niệm hoàn toàn mới để hiểu và NE cần cho trường hợp nhưng đáng để khám phá khi bạn đi sâu hơn vào Python.

Đã trả lời ngày 30 tháng 12 năm 2016 lúc 5:19Dec 30, 2016 at 5:19

Mike Müllermike MüllerMike Müller

79,9K18 Huy hiệu vàng157 Huy hiệu bạc160 Huy hiệu đồng18 gold badges157 silver badges160 bronze badges

Hỏi ngày 30 tháng 12 năm 2016 lúc 5:10

from random import randint

class Lotto(object):
    def sec_num(self):
        print("Second prizes:")
        i = 0
        while i <= 5:
            i += 1
            num = randint(000000, 999999)
            yield("%06d" % num)

L = Lotto()
for g in L.sec_num():
     print(g)

Bạn chỉ có thể trả lại một lần từ một hàm. Vì vậy, điều tốt nhất sẽ là thu thập kết quả của bạn trong một danh sách và trả lại danh sách:

Đã trả lời ngày 30 tháng 12 năm 2016 lúc 5:19Dec 30, 2016 at 5:19

3novak3novak3novak

Mike Müllermike Müller1 gold badge15 silver badges28 bronze badges

Bạn có thể thử sửa đổi chức năng sec_num() của mình để sử dụng phương pháp tiếp cận sau.

class Lotto:
    def sec_num(self):
        print("Second prizes:")
        i = 0
        while i <= 5:
            i += 1
            num = randint(000000, 999999)
            yield "%06d" % num

L = Lotto()
for num in L.sec_num():
    print(num)

yield hoạt động như

from random import randint

def sec_num(count=5):
    return [randint(0, 999999) for _ in range(count)]

for num in sec_num():
    print("%06d" % num)
0, nhưng nó biến hàm thành một trình tạo. Nếu bạn chỉ in
from random import randint

def sec_num(count=5):
    return [randint(0, 999999) for _ in range(count)]

for num in sec_num():
    print("%06d" % num)
1, bạn sẽ thấy một đối tượng máy phát. Đây là một điều có thể có được để bạn có thể bước qua nó như trên để có được các giá trị mà nó chứa.

2.4761 Huy hiệu vàng15 Huy hiệu bạc28 Huy hiệu đồngDec 30, 2016 at 5:20

Đây là một nơi tốt để sử dụng yield - bạn sử dụng nó giống như

from random import randint

def sec_num(count=5):
    return [randint(0, 999999) for _ in range(count)]

for num in sec_num():
    print("%06d" % num)
0, nhưng thay vì hàm trả về một giá trị và dừng, nó đưa ra nhiều kết quả lần lượt khi người gọi lặp lại chúng. Nó sẽ trông như thế này:lvc

Điều này giống như xây dựng một danh sách trong hàm, ngoại trừ nó cho phép

from random import randint

def sec_num(count=5):
    return [randint(0, 999999) for _ in range(count)]

for num in sec_num():
    print("%06d" % num)
4 tập trung vào công việc của mình hơn là logic hành chính của việc xây dựng danh sách; Ngoài ra, nó có thể hiệu quả hơn trong một số trường hợp (đặc biệt là kết hợp với mô -đun stdlib
from random import randint

def sec_num(count=5):
    return [randint(0, 999999) for _ in range(count)]

for num in sec_num():
    print("%06d" % num)
5), vì mỗi kết quả mới chỉ được tạo ra vì người gọi muốn thay vì phải chờ tất cả chúng. Nếu bạn muốn tất cả chúng trong một danh sách, bạn vẫn có thể làm điều này:
from random import randint

def sec_num(count=5):
    return [randint(0, 999999) for _ in range(count)]

for num in sec_num():
    print("%06d" % num)
6.9 gold badges70 silver badges96 bronze badges

Đã trả lời ngày 30 tháng 12 năm 2016 lúc 5:20

Đã trả lời ngày 30 tháng 12 năm 2016 lúc 5:19Dec 30, 2016 at 5:19

Bạn có thể trả về nhiều giá trị trong Python không?

Bạn có thể trả về nhiều giá trị từ một hàm trong Python.Để làm như vậy, hãy trả về một cấu trúc dữ liệu chứa nhiều giá trị, như một danh sách chứa số dặm để chạy mỗi tuần.Các cấu trúc dữ liệu trong Python được sử dụng để lưu trữ các bộ sưu tập dữ liệu, có thể được trả về từ các chức năng.. To do so, return a data structure that contains multiple values, like a list containing the number of miles to run each week. Data structures in Python are used to store collections of data, which can be returned from functions.

Làm thế nào tôi có thể trả về nhiều giá trị?

Bạn có thể trả về nhiều giá trị bằng cách gói các giá trị đó thành từ điển, tuple hoặc danh sách.Những loại dữ liệu này cho phép bạn lưu trữ nhiều giá trị tương tự.Bạn có thể trích xuất các giá trị cá nhân từ chúng trong chương trình chính của bạn.Hoặc, bạn có thể vượt qua nhiều giá trị và tách chúng bằng dấu phẩy.bundling those values into a dictionary, tuple, or a list. These data types let you store multiple similar values. You can extract individual values from them in your main program. Or, you can pass multiple values and separate them with commas.

Bạn có thể trả về nhiều biến trong một phương thức không?

Bạn không thể trả về rõ ràng hai biến từ một hàm duy nhất, nhưng có nhiều cách khác nhau bạn có thể kết hợp hai biến để trả về chúng., but there are various ways you could concatenate the two variables in order to return them.