Tôi đang cố gắng tìm ra làm thế nào tôi có thể lấy một danh sách các số nguyên và trả lại tất cả các mục trong danh sách đó vào một danh sách khác là giá trị tối đa của chúng, nhưng với chỉ mục của chúng.
Vì vậy, tôi cần có khả năng làm điều này mà không cần sử dụng liệt kê, lambda, numpy hoặc bất cứ thứ gì thuộc loại đó. Nó phải là phương pháp thực sự cơ bản cho danh sách. Về cơ bản, những thứ như phụ lục, tối đa, vv. . Nếu đối với các tuyên bố cũng tốt.
Để làm rõ những gì tôi đang cố gắng làm, nói rằng tôi có một danh sách: In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5] 0 Tôi muốn nó trở lại In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5] 1
hỏi ngày 19 tháng 2 năm 2014 lúc 22:21Feb 19, 2014 at 22:21
1
Cách tiếp cận đơn giản nhất:
in [24]: a = [4, 34, 0, 0, 6, 34, 1] In [25]: j=0 In [26]: M=[] In [27]: m = max(a) In [28]: for i in a: if i==m: M.append(j) j+=1 ....: In [29]: M Out[29]: [1, 5]Sử dụng danh sách tổng hợp và liệt kê, những điều trên có thể được rút ngắn thành:
In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5]Đã trả lời ngày 19 tháng 2 năm 2014 lúc 22:38Feb 19, 2014 at 22:38
Fredrik Pihlfredrik PihlFredrik Pihl
43,6K7 Huy hiệu vàng82 Huy hiệu bạc130 Huy hiệu đồng7 gold badges82 silver badges130 bronze badges
1
Cách tiếp cận "hoàn toàn thủ công", sử dụng không có chức năng thư viện tiêu chuẩn đáng sợ đó:
def get_max_indices(vals): maxval = None index = 0 indices = [] while True: try: val = vals[index] except IndexError: return indices else: if maxval is None or val > maxval: indices = [index] maxval = val elif val == maxval: indices.append(index) index = index + 1Những gì nó mất trong ngắn gọn, nó đạt được trong ... không nhiều.
Đã trả lời ngày 19 tháng 2 năm 2014 lúc 23:12Feb 19, 2014 at 23:12
Jonrsharpejonrsharpejonrsharpe
Huy hiệu vàng 111K2525 gold badges217 silver badges403 bronze badges
Có những cách tốt hơn, nhưng nếu bạn thực sự muốn làm cho nó khó khăn ..
max_val = max(funny_list) i = 0 ind = [] for val in funny_list: if val == max_val: ind.append(i) i = i + 1
Jonrsharpe
Huy hiệu vàng 111K2525 gold badges217 silver badges403 bronze badges
Có những cách tốt hơn, nhưng nếu bạn thực sự muốn làm cho nó khó khăn ..Feb 19, 2014 at 22:37
Jonrsharperokuingh
Đã trả lời ngày 19 tháng 2 năm 2014 lúc 22:372 silver badges10 bronze badges
5
Trong hướng dẫn này, chúng tôi sẽ hiểu việc sử dụng phương thức Python Max (). Về cơ bản, phương thức Python In [30]: [i for i, x in enumerate(a) if x == max(a)]
Out[30]: [1, 5]
2 trả về giá trị tối đa trong số các giá trị được truyền hoặc các phần tử của điều đó được thông qua.the Python max() method. Basically, the Python In [30]: [i for i, x in enumerate(a) if x == max(a)]
Out[30]: [1, 5]
2 method returns the maximum value among the set of passed values or the elements of the passed iterable. Dưới đây là cú pháp sử dụng phương pháp Python In [30]: [i for i, x in enumerate(a) if x == max(a)]
Out[30]: [1, 5]
2 để tìm giá trị lớn nhất trong một điều khác nhau, có thểiterable, max(iterable, *[, key, default])
Here, Để tìm kiếm lớn nhất trong số hai hoặc nhiều giá trị được thông qua làm đối số, max(arg1, arg2, *args[, key])
Here, Chúng ta có thể sử dụng phương pháp In [30]: [i for i, x in enumerate(a) if x == max(a)]
Out[30]: [1, 5]
2 theo nhiều cách khác nhau để tìm mức tối đa hoặc lớn nhất của một điều đáng tin cậy hoặc cho hai hoặc nhiều đối số. Hãy cho chúng tôi xem phương thức hoạt động như thế nào với một đối tượng có thể lặp lại, hai hoặc nhiều giá trị, với chức năng khóa được chỉ định và cho nhiều đối tượng có thể lặp lại được truyền dưới dạng đối số. Ví dụ dưới đây, chúng tôi xem xét một danh sách với một số giá trị trong đó chúng tôi sẽ tìm ra yếu tố lớn nhất. Nhìn vào mã được đưa ra dưới đây một cách cẩn thận.list with some values in it for which we are to find the largest element. Look at the code given below carefully.Giới thiệu
Làm việc với phương thức Python Max ()
Với đối tượng khác
#initialisation of list list1 = [ 1,3,4,7,0,4,8,2 ] #finding max element print("max value is : ", max(list1,default=0))
Output::
Như chúng ta có thể thấy, đối với mã trên, chúng tôi khởi tạo danh sách, In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5] 6 và trực tiếp chuyển nó sang phương thức In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5] 2 với giá trị mặc định được đặt thành 0. Hàm trả về 8 vì nó là giá trị lớn nhất.0. The function returns 8 as it is the largest value.
Nếu danh sách trống, hàm sẽ vượt qua giá trị mặc định, đó là 0.empty, the function would have passed the default value, which is 0.
Chuyển hai hoặc nhiều giá trị cho phương thức Python Max ()
Khi hai hoặc nhiều giá trị được chuyển sang phương thức In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5] 2, nó sẽ trả về tối đa hoặc lớn nhất trong số đó. Những đối số này có thể là số nguyên, giá trị điểm nổi, ký tự hoặc thậm chí là chuỗi.
Chúng ta hãy lấy một ví dụ,
print("max value is : ", max(6,1,73,6,38))
Output::
Như mong muốn, chúng tôi nhận được giá trị tối đa, 73.73.
Với chức năng chính
Như chúng tôi đã đề cập trước đó, khóa là hàm đặt hàng một lót trên cơ sở giá trị tối đa trong số một tập hợp các giá trị sẽ được tìm thấy.
Ví dụ: nếu chúng ta muốn tìm một tuple từ một danh sách các bộ dữ liệu, có giá trị lớn nhất của phần tử thứ 2. Hãy cho chúng tôi xem làm thế nào chúng ta có thể làm điều đó.list of tuples, which has the largest value of the 2nd element. Let us see how we can do that.
#initialisation of variables list1 = [(9,2,7), (6,8,4), (3,5,1)] def f(tuple_1): return tuple_1[1] print("max : ", max(list1, key=f))
Output::
Ở đây, In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5] 9 là một chức năng do người dùng xác định, trả về phần tử thứ 2 của tuple đã qua. Chuyển chức năng này như một khóa cho phương pháp In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5] 2 đảm bảo rằng một bộ được trả về với phần tử thứ 2 lớn nhất. Ví dụ của chúng tôi, đó là (6, 8, 4).2nd element of the passed tuple. Passing this function as a key to the In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5] 2 method ensures that a tuple is returned with the largest 2nd element. For our example, it is ( 6, 8, 4).
Vượt qua nhiều lần lặp như đối số
Như chúng tôi đã nêu trước đó, phương thức Python Max () cũng có thể trả về các yếu tố lớn nhất của nhiều yếu tố có thể lặp lại làm đối số. Những đối số này có thể được lặp lại như chuỗi, ký tự, tuple, danh sách hoặc vv ..
Theo mặc định, phương thức In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5] 2 trả về đối tượng với phần tử 0 tối đa cho danh sách, bộ dữ liệu, v.v. và cho các chuỗi, nó so sánh ký tự đầu tiên của mỗi chuỗi được truyền.default, the In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5] 2 method returns the object with the maximum 0th element for lists, tuples, etc. And for strings, it compares the first character of each string passed.
Dưới đây chúng tôi đã lấy một ví dụ cho các bộ dữ liệu. Nhìn vào mã cẩn thận.
#initialisation of variables tuple1 = (5,23,7) tuple2 = (4,1,7) tuple3 = (7,37,1) print("max : ", max(tuple1,tuple2,tuple3))
Output:
Trong ví dụ này, ba bộ dữ liệu với một số giá trị ban đầu đã được chuyển trực tiếp đến phương thức In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5] 2. Trả về tuple với phần tử đầu tiên lớn nhất, tức là (7, 37, 1).three tuples with some initial values have been directly passed to the In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5] 2 method. Which returns the tuple with the largest first element i.e., (7, 37, 1).
Sự kết luận
Vì vậy, trong hướng dẫn này, chúng tôi đã tìm hiểu về phương pháp Python In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5] 2, việc sử dụng nó cũng như hoạt động của nó.
Xin lưu ý rằng, nếu giá trị mặc định không được đặt và một lần lặp trống được truyền được truyền dưới dạng đối số cho hàm In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5] 2 sẽ tăng giá trị.default value is not set and an empty iterable is passed as arguments to the In [30]: [i for i, x in enumerate(a) if x == max(a)] Out[30]: [1, 5] 2 function raises a ValueError.
Đối với bất kỳ câu hỏi nào liên quan đến chủ đề này, vui lòng sử dụng các ý kiến dưới đây.
Người giới thiệu
- Python Max () - Tạp chí Dev Post,
- Max () - Tài liệu Python,
- Chức năng Python Max bằng cách sử dụng ‘Biểu thức Key và Lambda - câu hỏi Overflow Stack.