Computer >> Máy Tính >  >> Lập trình >> Python

Python - Số lớn nhất có thể từ danh sách các số đã cho

Trong bài này, chúng ta sẽ học cách tìm số lớn nhất có thể từ danh sách các số đã cho. Chúng ta sẽ thấy hai cách khác nhau để tìm ra cách giải quyết vấn đề. Làm theo các bước dưới đây để giải quyết vấn đề.

  • Nhập mô-đun itertools cho phương thức hoán vị.
  • Khởi tạo danh sách với các số và một danh sách trống.
  • Lặp lại các hoán vị của danh sách.
    • Kết hợp tất cả các kết hợp và thêm kết quả vào danh sách trống.
  • Tìm số tối đa từ kết quả với phương thức và khóa max là int.
  • Chuyển đổi chuỗi thành số nguyên và in ra.

Ví dụ

Hãy xem mã.

# 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))

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

Đầu ra

67454335138

Hãy xem một cách khác để giải quyết vấn đề. Chúng tôi sẽ sắp xếp chức năng để giải quyết vấn đề. Làm theo các bước dưới đây để viết mã.

  • Chuyển danh sách đến chức năng đã sắp xếp.
  • Viết một hàm có tên get_key chấp nhận hai đối số.
  • Trả về -1 nếu str (đầu tiên) + str (thứ hai)> str (thứ hai) + str (đầu tiên) khác 1.
  • Kết hợp danh sách các phần tử bằng phương pháp nối.
  • In kết quả bằng cách chuyển đổi thành số nguyên.

Vì chúng tôi đang sử dụng một hàm làm khóa, chúng tôi phải chuyển đổi nó thành khóa bằng cách sử dụng phương thức cmp_to_key từ functools. Hãy xem mã.

Ví dụ

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))

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

Đầu ra

67454335138

Kết luận

Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.