Range trong Python

E muốn hỏi là có cách nào làm cho cái hàm range() trả về một cái list ngược không ạ?
ví dụ như range(3) thì list trả về sẽ là [0, 1, 2] nhưng e muốn nó trả về là [2, 1 , 0] thì có cái syntax nào gọn không ạ?

list.reverse() xem

range(3)[::-1]

Cái [] có quy luật ntn: [begin:end:step]

https://docs.python.org/2/whatsnew/2.3.html#extended-slices

2 Likes

Có 2 cách

sao lúc e dùng for i in range(3)[::-1]: print i thì nó ra được 2 1 0 nhưng khi range(3)[::-1] không thôi thì nó trả về range(2, -1, -1 )

range() tạo ra 1 list

This is a versatile function to create lists containing arithmetic progressions.

Vòng lặp kia như là duyệt list nên in ra 2 1 0 …

Còn cái extended slide nó như copy cái list theo range, step mà mình định sẵn thế nên nó tạo ra cái list mới chứ ko in ra như trên.

1 Like

Chào bạn.
Để tạo ra một list ngược với hàm range() thì như sau. Mình ví dụ:
list(range(10, 0, -1)) sẽ trả về [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

range(stop) hoặc range(start, stop, [step) là một kiểu dữ liệu dạng squence như list nhưng nó không phải là list. Có thể tìm hiểu thêm tại đây nhé, tài liệu tiếng Việt http://py4vn.com/controlflow.html#ham-range

Bạn nên tìm hiểu rõ các khái niệm cơ bản chứ không nên học kiểu mơ màng như thế sẽ chẳng làm được gì và nhanh chán.

1 Like

vào đây học để biết range là gì nhé :yum: http://pymi.vn/

Đó là python 3.
Trong document của py2 vẫn ghi rõ trả về 1 list.

Python 3 thì mới trả về
immutable sequence type

1 Like
for i in range(9, -1, -1):
	print (i)
for i in reversed(range(10)):
	print (i)
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?