01/10/2018, 00:50
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 ạ?
Bài liên quan
list.reverse()
xemrange(3)[::-1]
Cái [] có quy luật ntn: [begin:end:step]
https://docs.python.org/2/whatsnew/2.3.html#extended-slices
Có 2 cách
stackoverflow.com
Print a list in reverse order with range()?
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
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.
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.
vào đây học để biết range là gì nhé 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