在Python中,如何计算电子邮件地址列表中的数字“1”?

2024-09-22 20:39:17 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我目前掌握的情况:

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)

它不工作,返回[]。你知道吗


Tags: incomforscanexampleemail情况item
3条回答

你的逻辑有一些问题:

  • 在没有空格的字符串上使用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,然后使用str.count

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

email_security_scan(emails, 1)

# 4

你可以这样表示:

def checker(x):
    if "1" in x:
        return 1
    else:
        return 0

现在,获得计数可以很容易:

emails = [checker(x) for x in emails]
sum(emails)

这是怎么回事?你知道吗

  1. checker在列表条目中查找一个或多个“1”。你知道吗
  2. emails = [checker(x) for x in emails]对每个应用checker 输入您的列表并用新的列表理解覆盖emails变量。你知道吗
  3. sum正是你所期待的。你知道吗

下面的代码将计算列表中每个项目的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 = 0
    for item in a:
        numbers += item.count(b)
     print(numbers)

email_security_scan(emails, '1')

对于上面的例子,输出将是4。你知道吗

相关问题 更多 >