Hướng dẫn how do you repeat a function multiple times in python? - làm thế nào để bạn lặp lại một chức năng nhiều lần trong python?

Có một cách ngắn để gọi một chức năng hai lần hoặc nhiều hơn liên tiếp trong Python? Ví dụ:

do()
do()
do()

Có thể như:

3*do()

Hướng dẫn how do you repeat a function multiple times in python? - làm thế nào để bạn lặp lại một chức năng nhiều lần trong python?

Georgy

11.1k7 Huy hiệu vàng62 Huy hiệu bạc70 Huy hiệu đồng7 gold badges62 silver badges70 bronze badges

hỏi ngày 28 tháng 1 năm 2012 lúc 19:40Jan 28, 2012 at 19:40

4

Tôi sẽ:

for _ in range(3):
    do()

for _ in range(3):
    do()
0 là quy ước cho một biến có giá trị mà bạn không quan tâm.

Bạn cũng có thể thấy một số người viết:

[do() for _ in range(3)]

Tuy nhiên, điều đó đắt hơn một chút vì nó tạo ra một danh sách chứa các giá trị trả về của mỗi lần gọi

for _ in range(3):
    do()
1 (ngay cả khi đó là
for _ in range(3):
    do()
2), và sau đó ném đi danh sách kết quả. Tôi sẽ không đề xuất sử dụng điều này trừ khi bạn đang sử dụng danh sách các giá trị trả về.

Đã trả lời ngày 28 tháng 1 năm 2012 lúc 19:43Jan 28, 2012 at 19:43

Greg Hewgillgreg HewgillGreg Hewgill

917K178 Huy hiệu vàng1133 Huy hiệu bạc1267 Huy hiệu đồng178 gold badges1133 silver badges1267 bronze badges

5

Bạn có thể xác định một hàm lặp lại hàm được truyền N lần.

def repeat_fun(times, f):
    for i in range(times): f()

Nếu bạn muốn làm cho nó trở nên linh hoạt hơn, bạn thậm chí có thể chuyển các đối số cho chức năng được lặp lại:

def repeat_fun(times, f, *args):
    for i in range(times): f(*args)

Usage:

>>> def do():
...   print 'Doing'
... 
>>> def say(s):
...   print s
... 
>>> repeat_fun(3, do)
Doing
Doing
Doing
>>> repeat_fun(4, say, 'Hello!')
Hello!
Hello!
Hello!
Hello!

Đã trả lời ngày 28 tháng 1 năm 2012 lúc 19:50Jan 28, 2012 at 19:50

Hướng dẫn how do you repeat a function multiple times in python? - làm thế nào để bạn lặp lại một chức năng nhiều lần trong python?

Juliomalegriajuliomalegriajuliomalegria

23.6K13 Huy hiệu vàng70 Huy hiệu bạc89 Huy hiệu đồng13 gold badges70 silver badges89 bronze badges

Thêm ba cách làm như vậy:

.

def do():
    print 'hello world'

l=map(lambda x: do(), range(10))

.

.

________số 8

Hoặc như một lớp lót:

[f() for f in [do]*10]

Đã trả lời ngày 15 tháng 3 năm 2016 lúc 11:01Mar 15, 2016 at 11:01

VDVVDVVDV

8649 Huy hiệu bạc12 Huy hiệu đồng9 silver badges12 bronze badges

1

Một đơn giản cho vòng lặp?

3*do()
0

Hoặc, nếu bạn quan tâm đến kết quả và muốn thu thập chúng, với phần thưởng là 1 liner:

3*do()
1

Đã trả lời ngày 28 tháng 1 năm 2012 lúc 19:43Jan 28, 2012 at 19:43

Hướng dẫn how do you repeat a function multiple times in python? - làm thế nào để bạn lặp lại một chức năng nhiều lần trong python?

g.d.d.cg.d.d.cg.d.d.c

Greg Hewgillgreg Hewgill8 gold badges99 silver badges110 bronze badges

5

917K178 Huy hiệu vàng1133 Huy hiệu bạc1267 Huy hiệu đồng

3*do()
2

Bạn có thể xác định một hàm lặp lại hàm được truyền N lần.Jan 14, 2017 at 14:49

Nếu bạn muốn làm cho nó trở nên linh hoạt hơn, bạn thậm chí có thể chuyển các đối số cho chức năng được lặp lại:Joffer

Đã trả lời ngày 28 tháng 1 năm 2012 lúc 19:502 gold badges21 silver badges23 bronze badges

4

Juliomalegriajuliomalegria

  • 23.6K13 Huy hiệu vàng70 Huy hiệu bạc89 Huy hiệu đồng

  • Thêm ba cách làm như vậy:

.

3*do()
3

.

.

3*do()
4

________số 8Oct 28, 2016 at 9:22

Hoặc như một lớp lót:cjerdonek

Đã trả lời ngày 15 tháng 3 năm 2016 lúc 11:012 gold badges31 silver badges26 bronze badges

3*do()
5

VDVVDV

3*do()
6

8649 Huy hiệu bạc12 Huy hiệu đồng

Một đơn giản cho vòng lặp?Jun 9, 2017 at 19:44

Mr_and_Mrs_DMr_and_Mrs_DMr_and_Mrs_D

Hoặc, nếu bạn quan tâm đến kết quả và muốn thu thập chúng, với phần thưởng là 1 liner:37 gold badges174 silver badges353 bronze badges

0

45.5K8 Huy hiệu vàng99 Huy hiệu bạc110 Huy hiệu Đồng

3*do()
7

Theo quan điểm của tôi:

3*do()
8

Đã trả lời ngày 14 tháng 1 năm 2017 lúc 14:49Jun 12, 2019 at 13:22

JofferjofferGeorgy

11.1k7 Huy hiệu vàng62 Huy hiệu bạc70 Huy hiệu đồng7 gold badges62 silver badges70 bronze badges

1.8912 huy hiệu vàng21 Huy hiệu bạc23 Huy hiệu đồng

3*do()
9

Dưới đây là một cách tiếp cận không yêu cầu sử dụng vòng lặp

for _ in range(3):
    do()
6 hoặc xác định hàm trung gian hoặc chức năng Lambda (và cũng là một lớp lót). Phương pháp kết hợp hai ý tưởng sau:

Hướng dẫn how do you repeat a function multiple times in python? - làm thế nào để bạn lặp lại một chức năng nhiều lần trong python?

Gọi chức năng tích hợp

for _ in range(3):
    do()
7 với đối số Sentinel tùy chọn vàMay 10, 2017 at 11:54