Hướng dẫn python for from n to 1 - python cho từ n đến 1

8

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Cách tốt nhất để có được danh sách

range(N, -1, -1) is better
7 trong Python là gì? Tôi có 2 cách trong tâm trí

>>> range(10)[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> range(9, -1, -1)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

Đã hỏi ngày 7 tháng 11 năm 2013 lúc 15:07Nov 7, 2013 at 15:07

Hướng dẫn python for from n to 1 - python cho từ n đến 1

3

range(N, -1, -1) is better

Bạn có thể thấy nó mất ít thời gian hơn:

N = 10000

%timeit range(N+1)[::-1]
1000000 loops, best of 3: 767 ns per loop

%timeit range(N, -1, -1)
1000000 loops, best of 3: 334 ns per loop

Trong

range(N, -1, -1) is better
8, trước tiên bạn đang thực hiện chính xác điều tương tự như
range(N, -1, -1) is better
9 và sau đó đảo ngược danh sách, đó là lý do tại sao nó mất nhiều thời gian hơn.

Đã trả lời ngày 7 tháng 11 năm 2013 lúc 15:11Nov 7, 2013 at 15:11

Ankur Ankanankur AnkanAnkur Ankan

2.8252 Huy hiệu vàng22 Huy hiệu bạc38 Huy hiệu đồng2 gold badges22 silver badges38 bronze badges

4

Nếu danh sách các số của bạn có khả năng lớn hoặc nếu bạn không thực sự cần danh sách, nhưng chỉ là một cái gì đó để lặp lại trong phạm vi, bạn có thể tránh thực sự tạo một danh sách bằng cách sử dụng

xrange(N, -1, -1)

Như đã đề cập bởi Rob trong nhận xét dưới đây, hành vi này là mặc định mới theo Python 3 (trả về một trình tạo chứ không phải là một danh sách thực tế), nhưng đối với Python 2, bạn có

N = 10000

%timeit range(N+1)[::-1]
1000000 loops, best of 3: 767 ns per loop

%timeit range(N, -1, -1)
1000000 loops, best of 3: 334 ns per loop
0 trả về danh sách và
N = 10000

%timeit range(N+1)[::-1]
1000000 loops, best of 3: 767 ns per loop

%timeit range(N, -1, -1)
1000000 loops, best of 3: 334 ns per loop
1 trả về trình tạo.

Đã trả lời ngày 7 tháng 11 năm 2013 lúc 15:12Nov 7, 2013 at 15:12

Twalbergtwalbergtwalberg

57.6K10 Huy hiệu vàng86 Huy hiệu bạc82 Huy hiệu đồng10 gold badges86 silver badges82 bronze badges

2

import timeit

print timeit.timeit("range(10)[::-1]", number=10000000)
print timeit.timeit("range(9, -1, -1)", number=10000000)

Đầu ra trên máy của tôi

2.99922299385
2.24587512016

Có vẻ như cái thứ hai nhanh hơn một chút, vì vậy hãy sử dụng

N = 10000

%timeit range(N+1)[::-1]
1000000 loops, best of 3: 767 ns per loop

%timeit range(N, -1, -1)
1000000 loops, best of 3: 334 ns per loop
2

Đã trả lời ngày 7 tháng 11 năm 2013 lúc 15:12Nov 7, 2013 at 15:12

Hướng dẫn python for from n to 1 - python cho từ n đến 1

Twalbergtwalbergthefourtheye

57.6K10 Huy hiệu vàng86 Huy hiệu bạc82 Huy hiệu đồng52 gold badges443 silver badges486 bronze badges

Đầu ra trên máy của tôi

%timeit range(9,-1,-1)
> 1000000 loops, best of 3: 496 ns per loop

%timeit range(10)[::-1]
> 1000000 loops, best of 3: 659 ns per loop

Đã trả lời ngày 7 tháng 11 năm 2013 lúc 15:12Nov 7, 2013 at 15:12

Hướng dẫn python for from n to 1 - python cho từ n đến 1

aganders3aganders3aganders3

Twalbergtwalberg25 silver badges30 bronze badges

57.6K10 Huy hiệu vàng86 Huy hiệu bạc82 Huy hiệu đồng

range(n, -1, -1)

Đầu ra trên máy của tôi

Có vẻ như cái thứ hai nhanh hơn một chút, vì vậy hãy sử dụng

N = 10000

%timeit range(N+1)[::-1]
1000000 loops, best of 3: 767 ns per loop

%timeit range(N, -1, -1)
1000000 loops, best of 3: 334 ns per loop
2

for i, v in enumerate(reversed(mylist))

Thefourtheyethefourtheye

226K52 Huy hiệu vàng443 Huy hiệu bạc486 Huy hiệu ĐồngNov 7, 2013 at 15:10

Phương pháp thứ hai của bạn là một cảm ứng nhanh hơn:aIKid

5.71925 Huy hiệu bạc 30 Huy hiệu Đồng4 gold badges38 silver badges65 bronze badges

3

1. Đối với vòng lặp với phạm vi

Trong các bài học trước, chúng tôi đã xử lý các chương trình và điều kiện tuần tự. Thường thì chương trình cần lặp lại một số khối nhiều lần. Đó là nơi các vòng lặp có ích. Có các toán tử vòng

N = 10000

%timeit range(N+1)[::-1]
1000000 loops, best of 3: 767 ns per loop

%timeit range(N, -1, -1)
1000000 loops, best of 3: 334 ns per loop
5 và
N = 10000

%timeit range(N+1)[::-1]
1000000 loops, best of 3: 767 ns per loop

%timeit range(N, -1, -1)
1000000 loops, best of 3: 334 ns per loop
6 trong Python, trong bài học này, chúng tôi đề cập đến
N = 10000

%timeit range(N+1)[::-1]
1000000 loops, best of 3: 767 ns per loop

%timeit range(N, -1, -1)
1000000 loops, best of 3: 334 ns per loop
5.

N = 10000

%timeit range(N+1)[::-1]
1000000 loops, best of 3: 767 ns per loop

%timeit range(N, -1, -1)
1000000 loops, best of 3: 334 ns per loop
5 Vòng lặp lặp lại trên bất kỳ chuỗi nào. Chẳng hạn, bất kỳ chuỗi nào trong Python là một chuỗi các ký tự của nó, vì vậy chúng ta có thể lặp lại chúng bằng cách sử dụng
N = 10000

%timeit range(N+1)[::-1]
1000000 loops, best of 3: 767 ns per loop

%timeit range(N, -1, -1)
1000000 loops, best of 3: 334 ns per loop
5:

for character in 'hello':
    print(character)

Một trường hợp sử dụng khác cho một vòng lặp là lặp lại một số biến số nguyên trong việc tăng hoặc giảm thứ tự. Một chuỗi số nguyên như vậy có thể được tạo bằng cách sử dụng hàm

xrange(N, -1, -1)
0:

range(N, -1, -1) is better
0

Hàm

xrange(N, -1, -1)
0 tạo ra một chuỗi với các số
xrange(N, -1, -1)
2,
xrange(N, -1, -1)
3, ...,
xrange(N, -1, -1)
4. Số cuối cùng không được bao gồm.

Có một dạng giảm phạm vi () -

xrange(N, -1, -1)
5, trong trường hợp đó MIN_VALUE được đặt hoàn toàn thành 0:

range(N, -1, -1) is better
1

Bằng cách này, chúng ta có thể lặp lại một số hành động nhiều lần:

range(N, -1, -1) is better
2

Tương tự như với IF-Else, thụt lề là những gì chỉ định hướng dẫn nào được kiểm soát bởi

N = 10000

%timeit range(N+1)[::-1]
1000000 loops, best of 3: 767 ns per loop

%timeit range(N, -1, -1)
1000000 loops, best of 3: 334 ns per loop
5 và cái nào không.

Phạm vi () có thể xác định một chuỗi trống, như

xrange(N, -1, -1)
7 hoặc
xrange(N, -1, -1)
8. Trong trường hợp này, for-khối sẽ không được thực thi:

range(N, -1, -1) is better
3

Chúng ta hãy có ví dụ phức tạp hơn và tổng hợp các số nguyên từ 1 đến N bao quát.

range(N, -1, -1) is better
4

Hãy chú ý rằng giá trị tối đa trong phạm vi () là

xrange(N, -1, -1)
9 để làm cho
import timeit

print timeit.timeit("range(10)[::-1]", number=10000000)
print timeit.timeit("range(9, -1, -1)", number=10000000)
0 bằng n trên bước cuối cùng.

Để lặp lại theo trình tự giảm, chúng ta có thể sử dụng một dạng phạm vi mở rộng () với ba đối số -

import timeit

print timeit.timeit("range(10)[::-1]", number=10000000)
print timeit.timeit("range(9, -1, -1)", number=10000000)
1. Khi bị bỏ qua, bước này hoàn toàn bằng 1. Tuy nhiên, có thể là bất kỳ giá trị khác không. Vòng lặp luôn bao gồm start_value và loại trừ end_value trong quá trình lặp lại:

range(N, -1, -1) is better
5

Quảng cáo của Google, có thể dựa trên sở thích của bạn

2. Đặt chức năng in ()

Theo mặc định, hàm

import timeit

print timeit.timeit("range(10)[::-1]", number=10000000)
print timeit.timeit("range(9, -1, -1)", number=10000000)
2 in tất cả các đối số của nó ngăn cách chúng bằng một không gian và đặt một biểu tượng mới sau nó. Hành vi này có thể được thay đổi bằng cách sử dụng các đối số từ khóa
import timeit

print timeit.timeit("range(10)[::-1]", number=10000000)
print timeit.timeit("range(9, -1, -1)", number=10000000)
3 (phân tách) và
import timeit

print timeit.timeit("range(10)[::-1]", number=10000000)
print timeit.timeit("range(9, -1, -1)", number=10000000)
4.

range(N, -1, -1) is better
6

Quảng cáo của Google, có thể dựa trên sở thích của bạn

Làm thế nào để bạn chạy một vòng lặp từ N đến 1 trong Python?

# Chương trình Python để in các số từ n đến 1 ..
number = int (input ("Vui lòng nhập bất kỳ số nào:")) i = number ..
while (i> = 1):.
in (i, end = '') i = i - 1 ..

N += 1 trong Python là gì?

Python không có toán tử tăng/giảm đơn (++/-).Thay vào đó để tăng giá trị, sử dụng A += 1. Để giảm giá trị, sử dụng -a -= 1.increament a value, use a += 1. to decrement a value, use− a -= 1.

Có một vòng lặp trong Python?

Một vòng lặp được sử dụng để lặp lại trên một chuỗi (đó là danh sách, một tuple, từ điển, một tập hợp hoặc một chuỗi).Điều này ít giống như từ khóa trong các ngôn ngữ lập trình khác và hoạt động giống như một phương thức iterator như được tìm thấy trong các ngôn ngữ lập trình hướng đối tượng khác. (that is either a list, a tuple, a dictionary, a set, or a string). This is less like the for keyword in other programming languages, and works more like an iterator method as found in other object-orientated programming languages.