如何计算一个元素在Python列表中出现的次数?

时间:2019-08-28 14:18:22

标签: python list

我正在寻找一种方法来计算元素在列表中出现的次数。

我找到了一种方法,但是我正在寻找一种有效的方法。

示例:

查找数字import paramiko import psycopg2 from tendo import singleton import os import inspect import re import sys import logging SECTION_SRC_STAR = "DEFAULT" SSH_HOST = 'name.com' SSH_USERNAME = 'root' #SSH_KEYFILE = os.path.realpath(os.path.abspath(os.path.join(os.path.split(inspect.getfile(inspect.currentframe()))[0], "ssh.key"))) SSH_KEYFILE ="/Users/sandeep/Documents/ssh_pub" SSH_DIR = '/opt/prod_odoo_out/carrierfiles/dhl/4/export/' SSH_PORT = 22 SSH_MASK = 'file_pattern.*\.csv' DSN = "dbname='postgres' user='postgres' host='localhost' password='postgres' port='5432'" TABLE_NAME = 'staging.dhl_tracking_details' conn = psycopg2.connect(DSN) print("Database connected...") conn.set_client_encoding('latin-1') cur = conn.cursor() cur.execute("SET datestyle='German'") ssh = paramiko.SSHClient() t = paramiko.Transport((SSH_HOST, SSH_PORT)) pk = paramiko.RSAKey.from_private_key(open('/Users/sandeep/Documents/ssh_pub/id_rsa')) t.connect(username=SSH_USERNAME,pkey=pk) print("SFTP Connected...") try: sftp = paramiko.SFTPClient.from_transport(t) sftp = t.open_sftp_client() print("SFTP Client : Open") except Exception as e: msg = "Error connecting via ssh: %s" % e raise paramiko.SSHException(msg) XT = "*.csv" for filename in sftp.listdir(SSH_DIR): print(filename) #if re.match(SSH_MASK, filename): print("entered loop") path = '/%s/%s' % (SSH_DIR, filename) fobj = sftp.file(SSH_DIR+filename, 'rb') #cur.execute('TRUNCATE TABLE %s' % TABLE_NAME) sql = "COPY %s FROM STDIN WITH DELIMITER AS ';' csv header" table = 'staging.dhl_tracking_details' cur.copy_expert(sql=sql % table, file=fobj) conn.commit() t.close() 在列表5中出现的次数。

l

预期结果为l = [1, 1, 3, 4, 5, 5, 5, 5]

4 个答案:

答案 0 :(得分:3)

有很多方法:

1。使用list.count(最简单,最好的方法是只关心一个元素):

print(l.count(5))

2。使用collections.Counter(如果您关心所有元素,也非常简单,最好):

print(Counter(l)[5])

3。对len使用列表推导:

print(len([i for i in l if i == 5]))

4。将生成器表达式与sum一起使用:

print(sum(i == 5 for i in l))

答案 1 :(得分:3)

使用list.count

>>> l = [1, 1, 3, 4, 5, 5, 5, 5]
>>> l.count(5)
4

要查找列表中是否有5

>>> l = [1, 1, 3, 4, 5, 5, 5, 5]
>>> bool(l.count(5))
True

答案 2 :(得分:1)

一种方法是使用collections.Counter

from collections import Counter

l = [1, 1, 3, 4, 5, 5, 5, 5]  # find the number of 5

c = Counter(l)
print(c[5])  # 4

如果您想知道其他项目的出现次数,它将比l.count(5)更有效率。 (如果您只关心一项,效率会降低)。

答案 3 :(得分:0)

很简单
只要做:
l.index(5);