파이썬을 배우는 과정에서 목록의 빠른 정렬 기능은 우리에게 필수 과정입니다. 순서가 있는 시퀀스를 빠르게 삽입하는 방법을 소개하기 위해 먼저 두 정렬 기능의 차이점과 연관성을 살펴보겠습니다. 먼저 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_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()** 함수를 사용할 수 있습니다. 아래의 간단한 예를 살펴보십시오.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!