Tìm max trong python danh sách lồng nhau

Danh sách không đồng nhất là danh sách chứa các mục không đồng nhất [các mục có kiểu dữ liệu tùy ý]. Thí dụ. a = ['abc', 5, 'tốt', 6, 3]. Danh sách 'a' chứa các mục thuộc hai loại dữ liệu khác nhau, int và string

Đối với chuỗi như vậy nếu muốn tìm giá trị nhỏ nhất và lớn nhất thì không thể thực hiện trực tiếp được. Thay vào đó, trước tiên chúng ta cần lọc các giá trị số nguyên từ danh sách rồi áp dụng hàm min[]/max[]

Điều này có thể được thực hiện bằng cách sử dụng khả năng hiểu danh sách hoặc sử dụng hàm lambda như được hiển thị

a = ['abc', 5, 6, 'code']
#list comprehension

mini = min[i for i in a if isinstance[i, int]]
print["Minimum value is", mini]

#using lambda function
maxi = max[a, key = lambda i: [isinstance[i, int], i]
print["Maximum value is", maxi]

đầu ra

Minimum value is 5
Maximum value is 6

Trong đoạn mã trên, chúng ta có một danh sách chỉ có hai giá trị nguyên là 5 và 6. Chúng tôi lọc ra các giá trị này bằng cách sử dụng các phương pháp trên, sau đó là hàm min[]/max[]

Danh sách lồng nhau. giá trị tối thiểu và tối đa trong một danh sách không đồng nhất

Hãy xem xét một danh sách lồng nhau, a = [[‘code’, 1], [‘abc’, 7], [‘bit’, 5]]. Danh sách này có ba mục và mỗi mục lại là một danh sách. Nếu chúng ta sử dụng hàm min[]/max[] cho danh sách này để tìm các giá trị tối thiểu và tối đa trong danh sách, chúng tôi sẽ không nhận được kết quả mong muốn. Ví dụ

chúng tôi thường xử lý các danh sách lồng nhau khi thực hiện phân tích dữ liệu trong python. Trong bài viết này, chúng ta sẽ xem cách tìm danh sách dài nhất trong số các phần tử trong danh sách lồng nhau và sau đó in danh sách này cùng với độ dài của nó

Sử dụng lambda và bản đồ

Chúng tôi khai báo một danh sách lồng nhau và đưa nó làm đầu vào cho hàm lambda cùng với độ dài của nó. Cuối cùng ta áp dụng hàm max để lấy danh sách có độ dài lớn nhất cũng như độ dài của danh sách đó

Thí dụ

Bản thử trực tiếp

def longest[lst]:
   longestList = max[lst, key = lambda i: len[i]]
   maxLength = max[map[len, listA]]
   return longestList, maxLength
# Driver Code
listA = [[1,2], [2,45,6,7], [11,65,2]]
print["Longest List and its length:\n",longest[listA]]

đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Longest List and its length:
[[2, 45, 6, 7], 4]

Sử dụng len và max

Theo cách tiếp cận này, trước tiên chúng tôi tìm danh sách con có độ dài tối đa và sau đó lặp qua các phần tử của danh sách để tìm ra danh sách con nào khớp với độ dài đó. Chúng tôi sử dụng hàm max và len để thực hiện phép tính này

Thí dụ

Bản thử trực tiếp

def longest[lst]:
   longestList = []
   maxLength = max[len[x] for x in listA]
   for i in listA:
      if len[i] == maxLength :
         longestList = i
   return longestList, maxLength
# Driver Code
listA = [[1,2], [2,45,6,7], [11,6,2]]
print["Longest List and its length:\n",longest[listA]]

đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Longest List and its length:
[[2, 45, 6, 7], 4]

Sử dụng bản đồ

Đây là một cách tiếp cận tương tự như chương trình trên nhưng chúng tôi đang sử dụng chức năng bản đồ để tìm ra danh sách con có độ dài tối đa

Một danh sách có thể chứa danh sách khác làm thành phần của nó. Trong bài viết này, chúng tôi bằng nhau để tìm danh sách con có giá trị lớn nhất có trong một danh sách nhất định

Với tối đa và lambda

Max và hàm Lambda có thể được sử dụng cùng nhau để đưa ra danh sách con có giá trị lớn nhất

Thí dụ

Bản thử trực tiếp

listA = [['Mon', 90], ['Tue', 32], ['Wed', 120]]
# Using lambda
res = max[listA, key=lambda x: x[1]]
# printing output
print["Given List:\n", listA]
print["List with maximum value:\n ", res]

đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Given List:
[['Mon', 90], ['Tue', 32], ['Wed', 120]]
List with maximum value:
['Wed', 120]

Với itergetter

Chúng tôi sử dụng itemgetter từ vị trí chỉ mục 1 và áp dụng hàm tối đa để lấy danh sách con có giá trị tối đa

Câu trả lời ngắn. Để tìm danh sách tối đa trong danh sách các danh sách, bạn cần tạo hai danh sách có thể so sánh được. Làm sao? . Đối số chính là một hàm nhận một đầu vào [danh sách] và trả về một đầu ra [một giá trị số]. Danh sách có giá trị số lớn nhất được trả về là giá trị lớn nhất của danh sách danh sách

Làm cách nào để tìm tối đa danh sách danh sách trong Python?


Xem video này trên YouTube

Vấn đề

Vấn đề. Giả sử bạn có một danh sách các danh sách [danh sách lồng nhau] và bạn muốn tìm giá trị lớn nhất của danh sách này. Việc so sánh các danh sách không phải là chuyện nhỏ—rốt cuộc thì tối đa giữa các danh sách là bao nhiêu?

  1. Phần tử đầu tiên của mỗi danh sách bên trong
  2. Phần tử thứ i của mỗi danh sách bên trong
  3. Tổng các phần tử danh sách bên trong
  4. Tối đa các phần tử danh sách bên trong
  5. Tối thiểu các phần tử danh sách bên trong

👉 Hướng dẫn đề xuất. Python Tìm danh sách dài nhất trong danh sách

Thí dụ

Thí dụ. Đưa ra một danh sách các danh sách [[1, 1, 1], [0, 2, 0], [3, 3, -1]]. Phần tử nào là cực đại?

  1. Phần tử đầu tiên của mỗi danh sách bên trong. Tối đa là [3, 3, -1]
  2. Phần tử thứ i của mỗi danh sách bên trong [i = 2]. Tối đa là [1, 1, 1]
  3. Tổng các phần tử danh sách bên trong. Tối đa là [3, 3, -1]
  4. Tối đa các phần tử danh sách bên trong. Tối đa là [3, 3, -1]
  5. Tối thiểu các phần tử danh sách bên trong. Tối đa là [3, 3, -1]

Vì vậy, làm thế nào để bạn thực hiện điều này?

Giải pháp

Giải pháp. Sử dụng hàm key0 với đối số chính

cú pháp. Hàm max[] là một hàm tích hợp sẵn trong Python [Python phiên bản 2. x và 3. x]. Đây là cú pháp

key2

Đối số Mô tả_______9_______3Các giá trị mà bạn muốn tìm giá trị lớn nhất trong số đó. Trong trường hợp của chúng tôi, đó là một danh sách các danh sách. key[Tùy chọn. Mặc định key5. ] Truyền một hàm nhận một đối số và trả về một giá trị có thể so sánh được. Hàm này sau đó được áp dụng cho từng phần tử trong danh sách. Sau đó, phương pháp tìm giá trị lớn nhất dựa trên kết quả của hàm chính thay vì chính các phần tử

Hãy nghiên cứu mã giải pháp cho các phiên bản khác nhau của chúng tôi để tính “danh sách” tối đa của một danh sách các danh sách [danh sách lồng nhau]

________số 8_______

Hãy tự mình thử trong vỏ mã tương tác của chúng tôi

Những bài viết liên quan

  • Làm cách nào để tìm mức tối thiểu của danh sách danh sách trong Python?
  • Phương pháp danh sách Python [Tổng quan]
  • Danh sách Python key6 – Hướng dẫn cơ bản
  • Danh sách Python – Mọi thứ bạn cần biết để bắt đầu
  • Khóa có giá trị tối đa trong Dict

Đi đâu từ đây?

Đủ lý thuyết. Hãy thực hành một số

Các lập trình viên được trả sáu con số trở lên vì họ có thể giải quyết vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa

Để trở nên thành công hơn trong việc viết mã, hãy giải quyết nhiều vấn đề thực tế hơn cho người thực. Đó là cách bạn trau dồi những kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, việc sử dụng lý thuyết học tập mà không ai cần là gì?

Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế

Bạn có muốn ngừng học với các dự án đồ chơi và tập trung vào các dự án mã thực tế giúp bạn kiếm tiền và giải quyết các vấn đề thực sự cho mọi người không?

🚀 Nếu câu trả lời của bạn là CÓ. , cân nhắc trở thành nhà phát triển Python tự do. Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện kỹ năng Python của bạn—ngay cả khi bạn là người mới hoàn toàn

Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi “Cách xây dựng kỹ năng Python có thu nhập cao của bạn” và tìm hiểu cách tôi phát triển công việc viết mã của mình trực tuyến cũng như cách bạn có thể làm được—từ sự thoải mái của bạn

Tham gia hội thảo trên web miễn phí ngay bây giờ

Chris

Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính

Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới

Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây

Chủ Đề