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 ạ?

Sang Võ viết 03:04 ngày 01/10/2018

list.reverse() xem

*grab popcorn* viết 03:03 ngày 01/10/2018

range(3)[::-1]

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

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

Minh Hoàng viết 03:05 ngày 01/10/2018

Có 2 cách

stackoverflow.com
ramesh.mimit

Print a list in reverse order with range()?

python
asked by ramesh.mimit on 04:12PM - 02 Sep 11

Nguyễn Thành Trung viết 02:59 ngày 01/10/2018

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 )

*grab popcorn* viết 02:59 ngày 01/10/2018

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.

Son Tran viết 02:57 ngày 01/10/2018

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.

KYN viết 03:03 ngày 01/10/2018

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

*grab popcorn* viết 02:56 ngày 01/10/2018

Đó 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

buithaiminh viết 03:01 ngày 01/10/2018
for i in range(9, -1, -1):
	print (i)
for i in reversed(range(10)):
	print (i)
Bài liên quan
0