>  기사  >  백엔드 개발  >  Python을 사용하여 정렬된 배열에 변수를 빠르게 삽입하는 방법은 무엇입니까?

Python을 사용하여 정렬된 배열에 변수를 빠르게 삽입하는 방법은 무엇입니까?

WBOY
WBOY앞으로
2023-05-09 22:49:201256검색

정렬 및 정렬 사용

그 자리에서 새 변수 수정 및 생성

파이썬을 배우는 과정에서 목록의 빠른 정렬 기능은 우리에게 필수 과정입니다. 순서가 있는 시퀀스를 빠르게 삽입하는 방법을 소개하기 위해 먼저 두 정렬 기능의 차이점과 연관성을 살펴보겠습니다. 먼저 sort()를 살펴보겠습니다. 다음 코드를 살펴보세요.

import random
# 随机生成10个100以内的整数
example_list = [random.randint(1,100) for i in range(10)]
# 对他们进行排序
example_list.sort()
print(example_list)

>>> [22, 28, 35, 47, 49, 55, 68, 79, 87, 98]

여기서 **sort()** 함수는 반환 값이 없지만 내부 정렬을 수행한다는 점에 유의하세요. 아래 코드를 보세요:

import random
example_list = [random.randint(1,100) for i in range(10)]
example_list_sort_test = example_list.sort()
print(example_list_sort_test)

>>> None

정렬된 콘텐츠를 수신하기 위해 새 변수를 사용할 때 None이 표시됩니다. 하지만 **sorted()**는 정렬된 목록을 저장하기 위해 새 변수를 생성합니다. 다음 코드를 살펴보세요.

import random
example_list = [random.randint(1,100) for i in range(10)]
example_list_sorted_test = sorted(example_list)
print(example_list_sorted_test)

>>> [6, 14, 14, 20, 28, 50, 58, 58, 71, 83]

보시다시피 우리는 **sorted()**를 사용합니다. sorting 이때 새로운 가변 저장소가 생성되어 우리에 의해 획득됩니다.

공통적으로 사용되는 매개변수

물론, 두 가지 정렬 함수에서 사용하는 매개변수는 동일한 내용을 많이 가지고 있습니다.

import random # 导入 random 模块,用于生成随机数

# 创建一个包含 10 个随机整数的列表,每个数的范围在 1 到 100 之间
example_list_argTest = [random.randint(1, 100) for i in range(10)]

# 将列表按升序排序并打印输出
example_list_argTest.sort()
print(example_list_argTest)

# 将列表按降序排序并打印输出
example_list_argTest.sort(reverse=True)
print(example_list_argTest)

# 创建一个包含三个子列表的列表
example_list_argTest_02 = [[5, 7], [1, 8], [9, 6]]
print(example_list_argTest_02)

# 对子列表按第一个元素排序并打印输出
example_list_argTest_02.sort()
print(example_list_argTest_02)

# 对子列表按第二个元素排序并打印输出
def takeSecond(test_list):
    return test_list[1]

example_list_argTest_02.sort(key=takeSecond)
print(example_list_argTest_02)

# 创建一个包含四个字符串的列表
example_list_argTest_03 = ['apple', 'big apple', 'pear', 'hen']
print(example_list_argTest_03)

# 对字符串按长度排序并打印输出
example_list_argTest_03.sort(key=len)
print(example_list_argTest_03)

>>>[4, 18, 26, 41, 43, 52, 77, 77, 97, 98]
>>>[98, 97, 77, 77, 52, 43, 41, 26, 18, 4]
>>>[[5, 7], [1, 8], [9, 6]]
>>>[[1, 8], [5, 7], [9, 6]]
>>>[[9, 6], [5, 7], [1, 8]]
>>>['apple', 'big apple', 'pear', 'hen']
>>>['hen', 'pear', 'apple', 'big apple']

그 중 **sorted()** 함수 매개변수는 다음과 같습니다. 다음은 일반적으로 사용됩니다. 매개변수 값과 매개변수의 의미:

  • key: 매개변수는 정렬을 위해 목록의 각 요소에 적용되는 함수를 매개변수로 허용할 수 있습니다. 이 함수는 하나의 매개변수를 허용하고 정렬에 사용할 값을 반환해야 합니다.

  • reverse: 목록 정렬 순서를 제어하는 ​​데 사용되는 선택적 매개변수입니다. reverse가 True이면 목록이 내림차순으로 정렬되고, reverse가 False이거나 지정되지 않으면(기본값은 False) 목록이 오름차순으로 정렬됩니다.

bisect를 사용하여 순서가 지정된 시퀀스에 변수를 삽입하세요

삽입된 요소의 위치 가져오기

bisect는 정렬된 목록에 요소를 삽입하고 요소를 삽입한 후 목록의 인덱스를 반환하는 데 사용됩니다. bisect_left()bisect_right()라는 두 가지 함수를 사용할 수 있습니다. 분명히 주요 차이점은 하나는 삽입의 왼쪽 인덱스를 반환하고 다른 하나는 오른쪽 인덱스를 반환한다는 것입니다. 삽입의. 다음 예를 살펴보십시오.

import bisect

example_list = [random.randint(1,100) for i in range(10)]
example_list.sort()
print(example_list)

left_index = bisect.bisect_left(example_list_sorted_test,58)
print(left_index)

right_index = bisect.bisect_right(example_list_sorted_test,58)
print(right_index)

>>>[9, 11, 16, 22, 40, 59, 60, 68, 83, 99]
>>>6
>>>8

또한 위의 두 함수에는 다음과 같은 두 개의 선택적 매개 변수도 있습니다.

  • lo 매개 변수는 목록에서 지정하는 데 사용할 수 있는 검색 범위의 시작 위치를 나타냅니다. 하위 범위 내에서 검색합니다.

  • hi 매개변수는 검색 범위의 끝 위치를 나타내며 목록의 하위 범위에서 검색을 지정하는 데 사용할 수 있습니다.

위 매개변수를 사용하여 삽입 간격의 일부를 선택할 수 있습니다. 다음 예를 참조하세요.

test_list = list(range(10))
print(test_list)
# 指定区间搜索插入
bisect.bisect_left(test_list, 2, 3, 5)

>>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>3

이 예에서는 검색 간격 삽입을 지정하고 삽입 인덱스 위치를 반환합니다.

insort를 사용하여 정렬된 순서에 요소를 삽입하세요

정렬 순서를 파괴하지 않고 목록에 요소를 삽입하려면 **insort()** 함수를 사용할 수 있습니다. 아래의 간단한 예를 살펴보십시오.

import bisect

sorted_list_example = [1, 3, 4, 6, 8, 9, 11]
bisect.insort(sorted_list_example, 7)
print(sorted_list_example )

>>> [1, 3, 4, 6, 7, 8, 9, 11]

위의 예에서는 맞춤 변수를 정렬된 배열에 삽입했습니다.

적용 예시

입력 결과를 평가하고 싶다고 가정해 보겠습니다. 실제로 위에서 소개한 방법을 사용하여 작성할 수 있습니다.

def grade(score, breakpoints = [60,70,80,90], grades='FDCBA'):
    index = bisect.bisect(breakpoints, score)
    return grades[index]

random_grades = [random.randint(1,100) for i in range(10)]
print(random_grades)

print([grade(s) for s in random_grades])

>>>[27, 28, 35, 89, 20, 61, 20, 89, 53, 92]
>>>['F', 'F', 'F', 'B', 'F', 'D', 'F', 'B', 'F', 'A']

위의 시퀀스 삽입 기능을 합리적으로 사용하면 됩니다. 등급 평가 기능을 완료하고, 다른 등급에 해당하는 등급을 반환합니다.

위 내용은 Python을 사용하여 정렬된 배열에 변수를 빠르게 삽입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제