Hướng dẫn convert range to list python - chuyển đổi phạm vi thành danh sách python

Tôi đang cố gắng lập một danh sách với các số

my_list = list(range(1, 1001))
0 trong đó. Rõ ràng điều này sẽ gây khó chịu khi viết/đọc, vì vậy tôi đang cố gắng lập một danh sách với một phạm vi trong đó. Trong Python 2 có vẻ như:

some_list = range(1,1000)

Sẽ hoạt động, nhưng trong Python 3, phạm vi tương tự như ____11 của Python 2?

Bất cứ ai có thể cung cấp một số cái nhìn sâu sắc về điều này?

Hướng dẫn convert range to list python - chuyển đổi phạm vi thành danh sách python

hỏi ngày 14 tháng 7 năm 2012 lúc 0:45Jul 14, 2012 at 0:45

2

Bạn chỉ có thể xây dựng một danh sách từ đối tượng phạm vi:

my_list = list(range(1, 1001))

Đây là cách bạn làm điều đó với các máy phát điện trong Python2.x. Thông thường, có lẽ bạn không cần một danh sách mặc dù vì bạn có thể đạt được giá trị

my_list = list(range(1, 1001))
2 hiệu quả hơn (
my_list = list(range(1, 1001))
3) và nếu bạn chỉ cần lặp lại nó, bạn có thể quay trở lại
my_list = list(range(1, 1001))
4.

Cũng lưu ý rằng trên Python2.x,

my_list = list(range(1, 1001))
1 vẫn có thể lập chỉ mục1. Điều này có nghĩa là
my_list = list(range(1, 1001))
4 trên Python3.x cũng có cùng một thuộc tính2

1

my_list = list(range(1, 1001))
7 hoạt động cho Python2.x

2 Tuyên bố tương tự với 1 trong Python3.x là

my_list = list(range(1, 1001))
8 và điều đó cũng hoạt động.

Đã trả lời ngày 14 tháng 7 năm 2012 lúc 0:48Jul 14, 2012 at 0:48

Hướng dẫn convert range to list python - chuyển đổi phạm vi thành danh sách python

Mgilsonmgilsonmgilson

291K63 Huy hiệu vàng610 Huy hiệu bạc677 Huy hiệu Đồng63 gold badges610 silver badges677 bronze badges

6

Trong Pythons

Một cách khác, được giới thiệu trong Python

>>> r = range(10)
>>> l = [*r]
>>> print(l)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0 với các khái quát giải nén của nó, là bằng cách sử dụng
>>> r = range(10)
>>> l = [*r]
>>> print(l)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1 trong danh sách theo nghĩa đen
>>> r = range(10)
>>> l = [*r]
>>> print(l)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2:

>>> r = range(10)
>>> l = [*r]
>>> print(l)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Mặc dù điều này tương đương với

>>> r = range(10)
>>> l = [*r]
>>> print(l)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
3, nhưng đó là cú pháp theo nghĩa đen và thực tế là không có cuộc gọi chức năng nào liên quan đến phép nó thực hiện nhanh hơn. Nó cũng ít ký tự hơn, nếu bạn cần mã hóa golf :-)

Đã trả lời ngày 2 tháng 11 năm 2017 lúc 23:53Nov 2, 2017 at 23:53

Hướng dẫn convert range to list python - chuyển đổi phạm vi thành danh sách python

2

Trong Python 3.x, hàm

>>> r = range(10)
>>> l = [*r]
>>> print(l)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
4 có loại riêng. Vì vậy, trong trường hợp này, bạn phải sử dụng Iterator

>>> r = range(10)
>>> l = [*r]
>>> print(l)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
5

Đã trả lời ngày 28 tháng 2 năm 2015 lúc 18:38Feb 28, 2015 at 18:38

3

Lý do tại sao Python3 thiếu một chức năng để trực tiếp nhận danh sách tầm xa là vì nhà thiết kế Python3 ban đầu khá mới làm quen trong Python2. Ông chỉ xem xét việc sử dụng hàm

>>> r = range(10)
>>> l = [*r]
>>> print(l)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
4 trong một vòng lặp, do đó, danh sách không bao giờ cần phải được mở rộng. Trên thực tế, rất thường xuyên, chúng ta cần sử dụng hàm
>>> r = range(10)
>>> l = [*r]
>>> print(l)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
4 để tạo danh sách và chuyển vào một hàm.

Do đó, trong trường hợp này, Python3 ít thuận tiện hơn so với Python2 vì:

  • Trong Python2, chúng ta có
    >>> r = range(10)
    >>> l = [*r]
    >>> print(l)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    8 và
    >>> r = range(10)
    >>> l = [*r]
    >>> print(l)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    4;
  • Trong Python3, chúng ta có
    >>> r = range(10)
    >>> l = [*r]
    >>> print(l)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    4 và
    [*range(N)]
    
    1

Tuy nhiên, bạn vẫn có thể sử dụng mở rộng danh sách theo cách này:

[*range(N)]

Hướng dẫn convert range to list python - chuyển đổi phạm vi thành danh sách python

Tế bào thần kinh

4.7204 Huy hiệu vàng35 Huy hiệu bạc54 Huy hiệu Đồng4 gold badges35 silver badges54 bronze badges

Đã trả lời ngày 24 tháng 7 năm 2018 lúc 12:26Jul 24, 2018 at 12:26

Hướng dẫn convert range to list python - chuyển đổi phạm vi thành danh sách python

xuancong84xuancong84xuancong84

1.13711 Huy hiệu bạc14 Huy hiệu đồng11 silver badges14 bronze badges

3

Bạn thực sự không cần phải sử dụng các số 1-1000 trong danh sách. Nhưng nếu vì một lý do nào đó bạn thực sự cần những con số này, thì bạn có thể làm:

[i for i in range(1, 1001)]

Danh sách hiểu biết một cách ngắn gọn:

Danh sách hiểu biết trên dịch thành:

nums = []
for i in range(1, 1001):
    nums.append(i)

Đây chỉ là cú pháp hiểu danh sách, mặc dù từ 2.x. Tôi biết rằng điều này sẽ hoạt động trong Python 3, nhưng tôi không chắc có cú pháp nâng cấp hay không

Phạm vi bắt đầu bao gồm tham số đầu tiên; nhưng kết thúc, không bao gồm tham số thứ hai (khi được cung cấp 2 tham số; nếu tham số đầu tiên bị bỏ lại, nó sẽ bắt đầu vào lúc '0')Not Including the second Parameter (when supplied 2 parameters; if the first parameter is left off, it'll start at '0')

range(start, end+1)
[start, start+1, .., end]

Hướng dẫn convert range to list python - chuyển đổi phạm vi thành danh sách python

Sherylhohman

15.4K17 Huy hiệu vàng85 Huy hiệu bạc90 Huy hiệu Đồng17 gold badges85 silver badges90 bronze badges

Đã trả lời ngày 14 tháng 7 năm 2012 lúc 0:47Jul 14, 2012 at 0:47

inspectorG4dgetinspectorG4dgetinspectorG4dget

107K25 Huy hiệu vàng140 Huy hiệu bạc236 Huy hiệu Đồng25 gold badges140 silver badges236 bronze badges

8

Python 3:

my_list = [*range(1001)]

Elletlar

3.0587 Huy hiệu vàng30 Huy hiệu bạc38 Huy hiệu Đồng7 gold badges30 silver badges38 bronze badges

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

Karmasankarmasankarmasan

1371 Huy hiệu bạc10 Huy hiệu đồng1 silver badge10 bronze badges

Trên thực tế, nếu bạn muốn 1-1000 (bao gồm), hãy sử dụng hàm

[*range(N)]
2 với các tham số 1 và 1001:
[*range(N)]
3, vì hàm
[*range(N)]
4 đi từ đầu đến (cuối-1), bao gồm.

Hướng dẫn convert range to list python - chuyển đổi phạm vi thành danh sách python

Đã trả lời ngày 14 tháng 7 năm 2012 lúc 0:49Jul 14, 2012 at 0:49

CosmicComputerCosmicComputerCosmicComputer

1.6621 Huy hiệu vàng15 Huy hiệu bạc15 Huy hiệu đồng1 gold badge15 silver badges15 bronze badges

Sử dụng phạm vi trong Python 3.

Dưới đây là một hàm ví dụ trả về giữa các số từ hai số

def get_between_numbers(a, b):
    """
    This function will return in between numbers from two numbers.
    :param a:
    :param b:
    :return:
    """
    x = []
    if b < a:
        x.extend(range(b, a))
        x.append(a)
    else:
        x.extend(range(a, b))
        x.append(b)

    return x

Kết quả

print(get_between_numbers(5, 9))
print(get_between_numbers(9, 5))

[5, 6, 7, 8, 9]  
[5, 6, 7, 8, 9]

Đã trả lời ngày 6 tháng 7 năm 2018 lúc 2:34Jul 6, 2018 at 2:34

Hướng dẫn convert range to list python - chuyển đổi phạm vi thành danh sách python

Rajiv Sharmarajiv SharmaRajiv Sharma

6.32049 Huy hiệu bạc53 Huy hiệu Đồng49 silver badges53 bronze badges

1

Trên thực tế, đây là một sự tốt nghiệp retro của Python3 so với Python2. Chắc chắn, python2 sử dụng phạm vi () và xrange () thuận tiện hơn python3 sử dụng danh sách (phạm vi ()) và phạm vi () tương ứng. Lý do là vì nhà thiết kế ban đầu của Python3 không có kinh nghiệm lắm, họ chỉ coi việc sử dụng chức năng phạm vi của nhiều người mới bắt đầu để lặp lại một số lượng lớn các yếu tố trong đó cả bộ nhớ và CPU không hiệu quả; Nhưng họ đã bỏ qua việc sử dụng hàm phạm vi để tạo ra một danh sách số. Bây giờ, đã quá muộn để họ thay đổi trở lại.

Nếu tôi là nhà thiết kế của Python3, tôi sẽ:

  1. Sử dụng irange để trả về trình lặp trình tự
  2. Sử dụng lrange để trả về danh sách trình tự
  3. Sử dụng phạm vi để trả về một trình lặp trình tự (nếu số lượng phần tử lớn, ví dụ: phạm vi (9999999) hoặc danh sách trình tự (nếu số lượng phần tử nhỏ, ví dụ: phạm vi (10))

Đó là tối ưu.

Đã trả lời ngày 10 tháng 2 năm 2018 lúc 9:44Feb 10, 2018 at 9:44

Hướng dẫn convert range to list python - chuyển đổi phạm vi thành danh sách python

xuancong84xuancong84xuancong84

1.13711 Huy hiệu bạc14 Huy hiệu đồng11 silver badges14 bronze badges

2

Là phạm vi () một danh sách?

Phạm vi () cung cấp chuỗi số và trả về một danh sách các số.Hàm xrange () cung cấp cho một đối tượng máy phát cần được lặp trong vòng lặp để có được các giá trị.Phạm vi () trả về một danh sách.xrange () trả về một đối tượng máy phát.. The xrange() function gives a generator object that needs to be looped in a for-loop to get the values. The range() returns a list. xrange() returns a generator object.

Phạm vi có trả lại một danh sách không?

Mặt khác, hàm phạm vi () trả về danh sách hoặc chuỗi số và tiêu thụ nhiều bộ nhớ hơn xrange ().Vì hàm Range () chỉ lưu trữ các giá trị bắt đầu, dừng và bước, nên nó tiêu thụ ít bộ nhớ hơn bất kể phạm vi mà nó biểu thị khi so sánh với danh sách hoặc tuple.returns a list or sequence of numbers and consumes more memory than xrange() . Since the range() function only stores the start, stop, and step values, it consumes less amount of memory irrespective of the range it represents when compared to a list or tuple.

Phạm vi có trả lại một danh sách hoặc trình tạo không?

Cả phạm vi và xrange đại diện cho một loạt các số và có cùng một chữ ký hàm, nhưng phạm vi trả về một danh sách trong khi Xrange trả về một trình tạo (ít nhất là trong khái niệm; việc triển khai có thể khác nhau).Giả sử, chúng tôi đã phải tính tổng của N đầu tiên, giả sử 1.000.000, các số không âm.range returns a list while xrange returns a generator (at least in concept; the implementation may differ). Say, we had to compute the sum of the first n, say 1,000,000, non-negative numbers.