Hướng dẫn faster python - trăn nhanh hơn

Điều gì là nhanh hơn, A cho vòng lặp sử dụng việc liệt kê hoặc sử dụng xrange?

Nội dung chính ShowShow

  • Trả lời 512DD114D49D94E55A001B2C
  • Sự khác biệt của việc viết đó là gì, và điều này:
  • Python có liệt kê nhanh hơn không?
  • Liệu việc liệt kê có làm tăng độ phức tạp thời gian không?
  • Zip có nhanh hơn so với Loop Python không?
  • Tại sao bạn sẽ sử dụng Enumerate () khi lặp lại trên một chuỗi?

Nội dung chính ShowShowShow

  • Trả lời 512DD114D49D94E55A001B2C
  • Sự khác biệt của việc viết đó là gì, và điều này:
  • Python có liệt kê nhanh hơn không?
  • Liệu việc liệt kê có làm tăng độ phức tạp thời gian không?
  • Zip có nhanh hơn so với Loop Python không?
  • Tại sao bạn sẽ sử dụng Enumerate () khi lặp lại trên một chuỗi?

Nội dung chính ShowShow

EDIT: Tôi đã thử nghiệm, và tôi chỉ thấy sự khác biệt tối thiểu.Jan 31, 2011 at 15:56

Hướng dẫn faster python - trăn nhanh hơn

hỏi ngày 31 tháng 1 năm 2011 lúc 15:56Jan 31, 2011 at 15:56Jan 31, 2011 at 15:56ichigo

Ichigoichigoichigoichigo2 gold badges6 silver badges17 bronze badges

9

3072 Huy hiệu vàng6 Huy hiệu bạc17 Huy hiệu đồng2 gold badges6 silver badges17 bronze badges2 gold badges6 silver badges17 bronze badges

>>>import pygame
>>>pygame.init()
>>>clock = pygame.time.Clock()
>>>a = list(range(100000))
>>>def do_with_range():
...    clock.tick()
...    k = 0
...    for i in range(len(a)):
...        k += a[i]
...    print(clock.tick())
>>>def do_with_enumerate():
...    clock.tick()
...    k = 0
...    for i, j in enumerate(a):
...        k += j
...    print(clock.tick())
>>>do_with_range()
23
>>>do_with_enumerate()
21

Liệt kê nhanh hơn một chút. Được thử nghiệm trong Python 3:

Nếu A không phải là một danh sách, mà là một trình tạo, sẽ nhanh hơn đáng kể khi sử dụng Enumerate (74ms sử dụng phạm vi, 23ms sử dụng Enumerate).Jan 31, 2011 at 16:24

cemper93cemper93cemper93cemper93cemper93

Đã trả lời ngày 31 tháng 1 năm 2011 lúc 16:24Jan 31, 2011 at 16:24Jan 31, 2011 at 16:244 silver badges18 bronze badges

7

7484 Huy hiệu bạc18 Huy hiệu đồng4 silver badges18 bronze badges4 silver badges18 bronze badges

>>> import timeit
>>> timeit.timeit('for i in xrange(100): a[i]', 'a = list(xrange(100))')
7.2920000553131104
>>> timeit.timeit('for i, o in enumerate(a): o', 'a = list(xrange(100))')
10.359999895095825
>>> timeit.timeit('for i in xrange(100): a[i] + 1', 'a = list(xrange(100))')
10.380000114440918
>>> timeit.timeit('for i, o in enumerate(a): o + 1', 'a = list(xrange(100))')
13.514999866485596

Bạn có thể sử dụng mô -đun thời gian trong thư viện tiêu chuẩn để so sánh cả hai. Hàm timeit.timeit () được sử dụng dưới đây có một tuyên bố rằng nó chạy 1'000'000 lần và trả về tổng thời gian tính bằng giây. Trong thử nghiệm này liệt kê () chậm hơn một chút.Jan 31, 2011 at 16:48

jd.jd.jd.jd.jd.

Đã trả lời ngày 31 tháng 1 năm 2011 lúc 16:48Jan 31, 2011 at 16:48Jan 31, 2011 at 16:483 gold badges45 silver badges55 bronze badges

1

Mu.

10,4K3 Huy hiệu vàng45 Huy hiệu bạc55 Huy hiệu Đồng3 gold badges45 silver badges55 bronze badges3 gold badges45 silver badges55 bronze badges

Examples:

for idx, element in ['foo', 'bar', 'baz']:
    print idx, element

for idx in xrange(3):
    print idx

Đối với các vòng lặp có thể sử dụng cả liệt kê và xrange cùng một lúc, mặc dù nó sẽ ngớ ngẩn. Hàm liệt kê thêm một chỉ mục để bạn có thể cho biết chỉ mục của một mục trong ITable của bạn là gì. Hàm xrange trả về một số lượng đầy đủ. Sử dụng nó khi bạn muốn làm điều gì đó một số lần nhất định, thay vì cho mỗi yếu tố trong một điều không thể.Jan 31, 2011 at 16:25

Đã trả lời ngày 31 tháng 1 năm 2011 lúc 16:25Jan 31, 2011 at 16:25Jan 31, 2011 at 16:25nmichaels

Nmichaelsnmichaelsnmichaelsnmichaels12 gold badges102 silver badges132 bronze badges

48.2K12 Huy hiệu vàng102 Huy hiệu bạc132 Huy hiệu đồng12 gold badges102 silver badges132 bronze badges12 gold badges102 silver badges132 bronze badges

0 điểm

choices = ['pizza', 'pasta', 'salad', 'nachos']
print 'Your choices are:' 
for index, item in enumerate(choices):
    print index, item

Sự khác biệt của việc viết đó là gì, và điều này:

choices = ['pizza', 'pasta', 'salad', 'nachos']
print 'Your choices are:' 
for i in range(len(choices)):
     print i, choices[i]

Python có liệt kê nhanh hơn không?

Trả lời 512DD114D49D94E55A001B2C

Liệu việc liệt kê có làm tăng độ phức tạp thời gian không?

Zip có nhanh hơn so với Loop Python không?

for i, item in enumerate(list):

Tại sao bạn sẽ sử dụng Enumerate () khi lặp lại trên một chuỗi?

for i in range(len(list)):
    item = list[i]

Nội dung chính ShowShow

EDIT: Tôi đã thử nghiệm, và tôi chỉ thấy sự khác biệt tối thiểu.

hỏi ngày 31 tháng 1 năm 2011 lúc 15:56Jan 31, 2011 at 15:56Jan 31, 2011 at 15:56

Ichigoichigoichigoichigo

3072 Huy hiệu vàng6 Huy hiệu bạc17 Huy hiệu đồng2 gold badges6 silver badges17 bronze badges2 gold badges6 silver badges17 bronze badges

0 điểm

Sự khác biệt của việc viết đó là gì, và điều này:

Python có liệt kê nhanh hơn không?

3072 Huy hiệu vàng6 Huy hiệu bạc17 Huy hiệu đồng2 gold badges6 silver badges17 bronze badges2 gold badges6 silver badges17 bronze badges

0 điểm

Python có liệt kê nhanh hơn không?

hơn 9 năm. When you just want a list of indices, it is faster to use len() and range(). It gets the job done, but not very pythonic.

Liệu việc liệt kê có làm tăng độ phức tạp thời gian không?

Zip có nhanh hơn so với Loop Python không?it won't change the time complexity even if it did (for a finite input).

Zip có nhanh hơn so với Loop Python không?

Tại sao bạn sẽ sử dụng Enumerate () khi lặp lại trên một chuỗi?zip is in fact more pythonic than enumerate , I came here to see if it was any more efficient. According to my tests, zip is around 10 to 20% faster than enumerate when simply accessing and using items from multiple lists in parallel.

Tại sao bạn sẽ sử dụng Enumerate () khi lặp lại trên một chuỗi?

Tái tạo () cho phép chúng ta lặp lại thông qua một chuỗi nhưng nó theo dõi cả chỉ mục và phần tử.Hàm liệt kê () có thể sử dụng một đối số, chẳng hạn như danh sách, chuỗi, tuple hoặc từ điển.allows us to iterate through a sequence but it keeps track of both the index and the element. The enumerate() function takes in an iterable as an argument, such as a list, string, tuple, or dictionary.allows us to iterate through a sequence but it keeps track of both the index and the element. The enumerate() function takes in an iterable as an argument, such as a list, string, tuple, or dictionary.allows us to iterate through a sequence but it keeps track of both the index and the element. The enumerate() function takes in an iterable as an argument, such as a list, string, tuple, or dictionary.