接受一个可迭代函数和一个函数的函数,return 一个字符串
functon that takes an iterable and a function, return a string
def start_when(iterable,p):
s = ''
a = ''
x = iter(iterable)
for y in x:
a = a + y
try:
for y in x:
if p(y) == True:
s = s + a[a.index(y):]
break
except StopIteration:
pass
return s
start_when 生成器将一个可迭代对象和一个谓词作为参数:它从可迭代对象中生成每个值,从第一个值开始,谓词 return 为 True
例如:
for i in start_when('combustible', lambda x : x >= 'q’):
print(i,end='')
它打印
ustible
但是,当我的函数接受输入时
('abcdefghijk', lambda x : x >='d')])
应该return
defghijk
但它return什么都不是
下面是我得到的错误:
21 *Error: ''.join([str(v) for v in start_when('abcdefghijk', lambda x : x >='d')]) -> but should -> defghijk
22 *Error: ''.join([str(v) for v in start_when(hide('abcdefghijk'), lambda x : x >='d')]) -> but should -> defghijk
23 *Error: ''.join([str(v) for v in start_when(hide('abcdefghijk'), lambda x : x >'f')]) -> but should -> ghijk
有人可以帮我修复我的功能吗?非常感谢!
好吧,您的方法根本不是生成器方法。以下生成器方法将非常适合您:
def start_when(iterable,p):
x=iter(iterable)
for y in x:
if p(y):
yield y
break
for y in x:
yield y
并这样称呼它:
for i in start_when('abcdefghijk', lambda x : x >='d'):
print(i,end='')
def start_when(iterable,p):
s = ''
a = ''
x = iter(iterable)
for y in x:
a = a + y
try:
for y in x:
if p(y) == True:
s = s + a[a.index(y):]
break
except StopIteration:
pass
return s
start_when 生成器将一个可迭代对象和一个谓词作为参数:它从可迭代对象中生成每个值,从第一个值开始,谓词 return 为 True
例如:
for i in start_when('combustible', lambda x : x >= 'q’):
print(i,end='')
它打印
ustible
但是,当我的函数接受输入时
('abcdefghijk', lambda x : x >='d')])
应该return
defghijk
但它return什么都不是
下面是我得到的错误:
21 *Error: ''.join([str(v) for v in start_when('abcdefghijk', lambda x : x >='d')]) -> but should -> defghijk
22 *Error: ''.join([str(v) for v in start_when(hide('abcdefghijk'), lambda x : x >='d')]) -> but should -> defghijk
23 *Error: ''.join([str(v) for v in start_when(hide('abcdefghijk'), lambda x : x >'f')]) -> but should -> ghijk
有人可以帮我修复我的功能吗?非常感谢!
好吧,您的方法根本不是生成器方法。以下生成器方法将非常适合您:
def start_when(iterable,p):
x=iter(iterable)
for y in x:
if p(y):
yield y
break
for y in x:
yield y
并这样称呼它:
for i in start_when('abcdefghijk', lambda x : x >='d'):
print(i,end='')