任何幫助都非常有幫助。我嘗試在這裏理解Iterable Object:<生成器對象in_a_row在0x0xxxxxxx>
這裏我必須定義一個函數in_a_row,它傳遞一個整數參數(稱爲n)和可迭代的參數。這個函數返回一組在迭代中出現在連續n次的值:in_a_row(2,[4,4,2,6,6,9,6,7,7,3,2,2])返回{2,4,6,7}。如果迭代器不包含至少n個值,則返回一個空集。拋出一個AssertionError,如果n是不是至少2
我想出了代碼:
def in_a_row(n,iterable):
assert n>=2, 'n has to at least 2'
result = set()
while any(iterable):
copy = iter(iterable)
for i in copy:
print(i)
if i == next(iterable):
result.add(i)
yield result
但是,當我與測試用例測試:
print('Testing in_a_row')
print(in_a_row(2,[4,4,2,6,6,9,6,7,7,3,2,2]))
print(in_a_row(3,[5,3,7,7,7,2,3,8,5,4,4,4,6]))
print(in_a_row(4,[5,5,5]))
for i in range(5,1,-1):
print('for',i,'=',in_a_row(i,map(lambda x : x.rstrip(),open('in_a_row.txt'))))
我把所有weirds導致可迭代對象:(+ _ +「)?
Testing in_a_row
<generator object in_a_row at 0x02871AF8>
<generator object in_a_row at 0x02871AF8>
<generator object in_a_row at 0x02871AF8>
for 5 = <generator object in_a_row at 0x028804B8>
for 4 = <generator object in_a_row at 0x028804B8>
for 3 = <generator object in_a_row at 0x028804B8>
for 2 = <generator object in_a_row at 0x028804B8>
假設是retrun號碼的設定()?
{4,6,7,2}
{7,4}
{}
{'l', 'i'}
{'l', 'i', 'c'}
{'l', 'm', 'i', 'f', 'c', 'x', 'z'}
不能使用任何BUIT的函數蟒蛇像「itertools」,只有while循環+ ITER +下一:(
旁白:'而任何(迭代器)'檢查,看看是否有任何價值是真實的;例如,如果'iterable == [0,0,0]','any(iterable)'將會是False,所以循環不會被輸入。那真的是你想要的嗎? – DSM