Hướng dẫn greater than n in python - lớn hơn n trong python

Tôi có một danh sách các số và tôi muốn nhận số lần một số xuất hiện trong danh sách đáp ứng một tiêu chí nhất định. Tôi có thể sử dụng khả năng hiểu danh sách [hoặc danh sách hiểu trong một hàm] nhưng tôi tự hỏi nếu ai đó có cách ngắn hơn.

# list of numbers
j=[4,5,6,7,1,3,7,5]
#list comprehension of values of j > 5
x = [i for i in j if i>5]
#value of x
len[x]

#or function version
def length_of_list[list_of_numbers, number]:
     x = [i for i in list_of_numbers if j > number]
     return len[x]
length_of_list[j, 5]

Có một phiên bản cô đọng hơn nữa?

Khi được hỏi ngày 10 tháng 5 năm 2012 lúc 23:01May 10, 2012 at 23:01

Bạn có thể làm điều gì đó như thế này:

>>> j = [4, 5, 6, 7, 1, 3, 7, 5]
>>> sum[i > 5 for i in j]
3

Ban đầu có vẻ lạ khi thêm True vào True theo cách này, nhưng tôi không nghĩ rằng đó là không hợp lý; Rốt cuộc,

>>> j = [4, 5, 6, 7, 1, 3, 7, 5]
>>> sum[i > 5 for i in j]
3
1 là một lớp con của
>>> j = [4, 5, 6, 7, 1, 3, 7, 5]
>>> sum[i > 5 for i in j]
3
2 trong tất cả các phiên bản kể từ 2.3:

>>> issubclass[bool, int]
True

Đã trả lời ngày 10 tháng 5 năm 2012 lúc 23:03May 10, 2012 at 23:03

người gửisenderle

Phù vàng 141K35 Huy hiệu vàng207 Huy hiệu đồng35 gold badges207 silver badges231 bronze badges

5

Bạn có thể tạo một kết quả trung gian nhỏ hơn như thế này:

>>> j = [4, 5, 6, 7, 1, 3, 7, 5]
>>> len[[1 for i in j if i > 5]]
3

Đã trả lời ngày 10 tháng 5 năm 2012 lúc 23:08May 10, 2012 at 23:08

Greg Hewgillgreg HewgillGreg Hewgill

918K178 Huy hiệu vàng1134 Huy hiệu bạc1268 Huy hiệu đồng178 gold badges1134 silver badges1268 bronze badges

1

Nếu bạn đang sử dụng Numpy, bạn có thể lưu một vài nét, nhưng tôi không nghĩ rằng nó sẽ nhanh hơn/nhỏ gọn hơn nhiều so với câu trả lời của người gửi.

import numpy as np
j = np.array[j]
sum[j > i]

Đã trả lời ngày 10 tháng 5 năm 2012 lúc 23:08May 10, 2012 at 23:08

Greg Hewgillgreg Hewgillludaavics

918K178 Huy hiệu vàng1134 Huy hiệu bạc1268 Huy hiệu đồng1 gold badge5 silver badges14 bronze badges

Nếu bạn đang sử dụng Numpy, bạn có thể lưu một vài nét, nhưng tôi không nghĩ rằng nó sẽ nhanh hơn/nhỏ gọn hơn nhiều so với câu trả lời của người gửi.

>>> j = [4, 5, 6, 7, 1, 3, 7, 5]
>>> sum[i > 5 for i in j]
3
3

LudaavicsludaavicsMay 10, 2012 at 23:15

6481 Huy hiệu vàng5 Huy hiệu bạc14 Huy hiệu đồng

>>> import numpy as np
>>> ten_million = 10 * 1000 * 1000
>>> x, y = [np.random.randn[ten_million] for _ in range[2]]
>>> %timeit sum[x > y]  # time Python builtin sum function
1 loops, best of 3: 24.3 s per loop
>>> %timeit [x > y].sum[]  # wow, that was really slow! time NumPy sum method
10 loops, best of 3: 18.7 ms per loop
>>> %timeit np.sum[x > y]  # time NumPy sum function
10 loops, best of 3: 18.8 ms per loop

A [phần nào] cách khác nhau:

Đã trả lời ngày 10 tháng 5 năm 2012 lúc 23:15Dec 7, 2015 at 11:18

Nếu bạn đang sử dụng Numpy [như trong câu trả lời của Ludaavic], đối với các mảng lớn, có lẽ bạn sẽ muốn sử dụng chức năng

>>> j = [4, 5, 6, 7, 1, 3, 7, 5]
>>> sum[i > 5 for i in j]
3
4 của Numpy chứ không phải là Python's Buildin
>>> j = [4, 5, 6, 7, 1, 3, 7, 5]
>>> sum[i > 5 for i in j]
3
4 để tăng tốc độ :

>>> from bisect import bisect
>>> j = [4, 5, 6, 7, 1, 3, 7, 5]
>>> j.sort[]
>>> b = 5
>>> index = bisect[j,b] #Find that index value
>>> print len[j]-index
3

[ở trên sử dụng "ma thuật" của ipython cho thời gian]Nov 8, 2016 at 8:08

Đã trả lời ngày 7 tháng 12 năm 2015 lúc 11:18Shashank

Cách đếm khác nhau bằng cách sử dụng mô -đun Bisect:1 gold badge22 silver badges35 bronze badges

Đã trả lời ngày 8 tháng 11 năm 2016 lúc 8:08

sum[map[lambda x:x>5, j]]
sum[1 for _ in filter[lambda x:x>5, j]]

ShashankshashankSep 10, 2019 at 16:42

1.0611 huy hiệu vàng22 Huy hiệu bạc35 Huy hiệu đồng

l = [34,56,78,2,3,5,6,8,45,6]  
print ["The list : " + str[l]]   
def count_greater30[l]:  
    count = 0  
    for i in l:  
        if i > 30:  
            count = count + 1.  
    return count
print["Count greater than 30 is : " + str[count]].  
count_greater30[l]

Tôi sẽ thêm một bản đồ và phiên bản lọc vì tại sao không.

Đã trả lời ngày 10 tháng 9 năm 2019 lúc 16:421 gold badge12 silver badges26 bronze badges

Bạn có thể làm như thế này bằng cách sử dụng chức năng:Oct 1, 2020 at 17:06

Joseph Budin

Python lớn hơn [>] toán tử lớn hơn toán tử, được biểu thị bằng>, kiểm tra xem giá trị bên trái có lớn hơn giá trị bên phải hay không.checks whether the left value is greater than the one on the right.

Tại sao A lớn hơn B trong Python?

Python xem xét thứ tự từ vựng của bảng chữ cái, hoặc bạn có thể nói giá trị ASCII.Trong trường hợp đó, bảng chữ cái 'B' lớn hơn bảng chữ cái 'A' và 'C' lớn hơn 'B', v.v.. In that case, the alphabet 'b' is greater than alphabet 'a', and 'c' is greater than 'b', and so on.

Bài Viết Liên Quan

Chủ Đề