首页 > 解决方案 > 在 Python 中,如何计算电子邮件地址列表中的数字“1”?

问题描述

这是我到目前为止所拥有的:

emails = ['james1@example.com', 'januline12@januline.com', 'fillip.morris@pm.com',
          'ray@bradbury.org', 'me+you@hotmail.com', 'seven11@gmail.com',
          'noreply@msd.com', 'cars4u@tesla.com']

def email_security_scan(a, b):
    numbers = []
    for item in a:
        for subitem in item.split():
            if subitem == b:
                numbers.append +=1
    print(numbers)

email_security_scan(emails, 1)

它不起作用,返回[]

标签: pythonlistcountsublist

解决方案


你的逻辑有一些问题:

  • 您正在使用str.split没有空格的字符串。无需拆分您的字符串。
  • 您正在将整数与字符串进行比较。这行不通。
  • 您正在追加到列表而不是递增计数器变量。

因此,如果您需要计算包含以下内容的电子邮件地址的数量,这将起作用'1'

def email_security_scan(a, b):
    count = 0
    for item in a:
        if str(b) in item:
            count += 1
    print(count)

email_security_scan(emails, 1)

# 3

更简单地说,您可以使用sum生成器表达式:

def email_security_scan(a, b):
   print(sum(str(b) in item for item in a))

email_security_scan(emails, 1)

# 3

或者要计算所有电子邮件地址中“1”的总数str.join,您可以使用then str.count

def email_security_scan(a, b):
    print(''.join(a).count(str(b)))

email_security_scan(emails, 1)

# 4

推荐阅读