def join_while_too_short(it, length):
it = iter(it)
while True:
current = next(it)
while len(current) < length:
current += ' ' + next(it)
yield current
l=[ 'abcdef', 'abcdt', 'neft', 'ryr', 'yyyyy', 'u', 'aaaaaaaaaa' ]
newlist = list()
newitem = ''
for item in l:
if len(newitem) == 0:
newitem = item
else:
newitem = newitem +" "+ item
if len(newitem) > 9:
newlist.append(newitem)
newitem=''
if len(newitem)>0: # grab any left over stuff that was <10 digits at the end
newlist.append(newitem)
print (newlist)
这应该行得通,注意列表是被修改过的,如果你不想这样,就在之前复制一份。用你给的案子做了测试。在
如果你不能使用发电机,那么它的长度就不能满足要求:
在输入上运行此选项时,将生成正确的结果:
^{pr2}$它不会真正有效,因为它会不断地格式化字符串,您也可以将它们收集为list并在生成之前将它们连接起来,但是这个版本应该更清楚地说明原理。在
请注意,这一要求可能并不总是得到满足,因为结尾可能没有足够的项来创建所需长度的字符串。但是你说你要“考虑下一个元素,直到达到期望的长度”。而目前的方法正是这样做的。在
只需运行一次,并附加到你达到的条件应该可以正常工作。据我所知,你无法理解列表的多行操作方式,但如果Pandas是一个选项,请通过编辑您的问题让我们知道。Pandas Dataframe shift方法允许您在lambda函数中一次检查多行,并以非for循环的方式解决此问题。在
运行python3.6的jupyter的输出如您所期望的那样
相关问题 更多 >
编程相关推荐