programing

Python 3 회전 범위를 목록으로 설정

projobs 2022. 10. 11. 21:54
반응형

Python 3 회전 범위를 목록으로 설정

숫자가 적힌 리스트를 만들고 있어요.1-1000쓰거나 읽기가 귀찮을 것 같아서 범위 있는 목록을 만들고 있어요.Python 2에서는 다음과 같이 보입니다.

some_list = range(1,1000)

동작했을 것입니다만, Python 3 에서는, 그 범위는 Python 3 와 비슷합니다.xrangePython 2의 경우?

이에 대한 통찰력을 제공할 수 있는 사람이 있습니까?

range 객체에서 목록을 작성할 수 있습니다.

my_list = list(range(1, 1001))

이것은 python2.x의 제너레이터에서도 마찬가지입니다.일반적으로는 리스트는 필요 없습니다.단, 다음과 같은 값으로 취득할 수 있기 때문입니다.my_list[i]보다 효율적으로 (i + 1반복할 필요가 있는 경우는, 에 폴백 할 수 있습니다.range.

또한 python2.x에서는xrange아직1 색인화할 수 있습니다.즉,range또한 python3.x는 같은 속성을2 가지고 있습니다.

1print xrange(30)[12]python 2.x에서 동작합니다.

python3.x 와 유사한 문장은 2다음과 같습니다.print(range(30)[12])그것도 효과가 있어요.

Pythons <= 3.4에서는 다른 제안과 같이 다음을 사용할 수 있습니다.list(range(10))범위를 벗어난 목록을 만들기 위해(일반적으로 반복할 수 있는 모든 것)

Python에 도입된 또 다른 대안3.5포장을 해제한 일반화는*문자 그대로[]:

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

이것은 에 상당하지만list(r)는 문자 그대로의 구문이며 함수 호출이 관여하지 않기 때문에 보다 빠르게 실행할 수 있습니다.골프의 코드화가 필요한 경우는, 문자수가 적어집니다. :-)

Python 3.x에서는range()함수에 고유한 유형이 있습니다.따라서 이 경우 반복기를 사용해야 합니다.

list(range(1000))

Python3가 레인지 리스트를 직접 얻을 수 있는 기능이 없는 이유는 Python2의 오리지널 Python3 디자이너가 초보자였기 때문입니다.그는 단지 의 사용만을 고려했다.range()따라서 목록을 확장할 필요가 없습니다.사실, 매우 자주 우리는 이 시스템을 사용해야 합니다.range()목록을 생성하고 함수로 전달하기 위한 함수입니다.

따라서 이 경우 Python3은 Python2에 비해 다음과 같은 이유로 편리하지 않습니다.

  • Python2에서는xrange()그리고.range();
  • Python3에서는range()그리고.list(range())

단, 다음과 같은 방법으로 목록 확장을 사용할 수 있습니다.

[*range(N)]

리스트에서 1-1000이라는 숫자를 사용할 필요는 없습니다.그러나 어떤 이유로 이러한 수치가 꼭 필요한 경우 다음을 수행할 수 있습니다.

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

간단히 이해 목록:

위의 목록 이해는 다음과 같습니다.

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

이것은 리스트 이해 구문일 뿐이지만 2.x에서는 동작합니다.이것은 python 3에서도 동작하는 것을 알고 있습니다만, 업그레이드 된 구문이 있는지는 잘 모르겠습니다.

범위는 첫 번째 매개 변수를 포함하지만 두 번째 매개 변수를 포함하지 않음으로 끝납니다(2개의 매개 변수를 제공하면 첫 번째 매개 변수가 꺼지면 '0'에서 시작됩니다.

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

Python 3:

my_list = [*range(1001)]

1-1000(포함)을 사용하고 싶은 경우는,range(...)파라미터 1과 1001로 기능합니다.range(1, 1001)왜냐하면range(start, end)함수는 시작에서 (end-1)로 이동합니다.

Python 3에서 Range를 사용합니다.

다음은 두 번호에서 숫자 사이를 반환하는 함수 예제입니다.

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

결과

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

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

사실 이것은 Python2에 비해 Python3의 역계조입니다.range()와 xrange()를 사용하는 Python2가 각각 list(range)와 range()를 사용하는 Python3보다 편리합니다.그 이유는 Python3의 원래 설계자가 경험이 많지 않기 때문에 메모리 및 CPU의 비효율적인 많은 요소에서 반복하기 위해 많은 초보자가 범위 함수를 사용하는 것을 고려했을 뿐, 번호 목록을 작성하기 위해 범위 함수를 사용하는 것을 소홀히 했습니다.이제 그들이 이미 되돌아가기에는 너무 늦었다.

만약 내가 Python3의 디자이너가 된다면, 나는 다음과 같이 할 것이다.

  1. 시퀀스 반복기를 반환하기 위해 irange를 사용한다.
  2. 시퀀스 목록을 반환하려면 lrange를 사용합니다.
  3. range를 사용하여 시퀀스 반복기(요소의 수가 많은 경우(예: range(99999)), 시퀀스 목록(요소의 수가 적은 경우, range(10))) 중 하나를 반환합니다.

그게 최선일 거예요.

언급URL : https://stackoverflow.com/questions/11480042/python-3-turn-range-to-a-list

반응형