Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python - 주어진 숫자 목록에서 가능한 가장 큰 숫자

<시간/>

이 기사에서는 주어진 숫자 목록에서 가능한 가장 큰 숫자를 찾는 방법을 배울 것입니다. 우리는 문제를 해결하기 위해 두 가지 다른 방법을 보게 될 것입니다. 문제를 해결하려면 아래 단계를 따르세요.

  • 순열 방법을 위한 itertools 모듈을 가져옵니다.
  • 숫자와 빈 목록으로 목록을 초기화합니다.
  • 목록의 순열을 반복합니다.
    • 모든 조합을 결합하고 결과를 빈 목록에 추가합니다.
  • max 메소드와 키를 int로 사용하여 결과에서 최대 수를 찾습니다.
  • 문자열을 정수로 변환하여 출력합니다.

예시

코드를 봅시다.

# importing the module
import itertools

# initializing the list
numbers = [45, 35, 138, 43, 67]

# result
result = []

# permutations
for permutation in itertools.permutations(str(number) for number in numbers):
   result.append(''.join(permutation))

# finding max
maximum = max(result, key=int)

# printing the max
print(int(maximum))

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

출력

67454335138

문제를 해결하는 다른 방법을 살펴보겠습니다. 우리는 문제를 해결하기 위해 기능을 정렬합니다. 아래 단계에 따라 코드를 작성하세요.

  • 목록을 정렬된 함수에 전달합니다.
  • 두 개의 인수를 허용하는 get_key라는 함수를 작성하세요.
  • str(first) + str(second)> str(second) + str(first) else 1이면 -1을 반환합니다.
  • 조인 방법을 사용하여 요소 목록을 조인합니다.
  • 정수로 변환하여 결과를 출력합니다.

함수를 키로 사용하기 때문에 functools에서 cmp_to_key 메소드를 사용하여 키로 변환해야 합니다. 코드를 봅시다.

예시

from functools import cmp_to_key

# initializing the list
numbers = [45, 35, 138, 43, 67]

def get_key(first, second):
   if str(first) + str(second) > str(second) + str(first):
      return -1
   return 1

# getting the result
result = sorted(numbers, key=cmp_to_key(get_key))

# joining the result
result = "".join(str(integer) for integer in result)

# printing the result
print(int(result))

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

출력

67454335138

결론

튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.