这是我到目前为止所拥有的:
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)
它不起作用,返回[]
。
答案 0 :(得分:2)
您的逻辑存在一些问题:
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
或者要计算所有电子邮件地址中'em的总数'1',您可以使用str.join
,然后使用str.count
:
def email_security_scan(a, b):
print(''.join(a).count(str(b)))
email_security_scan(emails, 1)
# 4
答案 1 :(得分:1)
下面的代码将计算列表中每个项目的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。
答案 2 :(得分:1)
这是在生成器上使用sum()
的另一种方法:
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' ]
print(sum(1 for email in emails if '1' in email))
# 3
或者:
print(sum('1' in email for email in emails))
# 3
答案 3 :(得分:1)
您可以这样表示:
def checker(x):
if "1" in x:
return 1
else:
return 0
现在计数很容易:
emails = [checker(x) for x in emails]
sum(emails)
这是怎么回事?
checker
在列表条目中查找一个或多个“ 1” 。 emails = [checker(x) for x in emails]
应用于checker
列表中的条目,并使用我们新的列表理解功能覆盖emails
变量。 sum
可以满足您的期望。答案 4 :(得分:0)
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' ]
sum([i.count('1') for i in emails])
输出:4