这是一个例子。

该文件具有字符串:4;4;4;8;4;4;4;9;9;4;4

我希望它输出:

4;4;4
8
4;4;4
9
9
4;4


在此示例中,确定何时进行拼接的限制为大于4的任何数字。我尝试在此处查看python库和其他问题。我的猜测涉及以下方面:

listA = []
listB = []
for i in line:
    listA.append(i)

for item in listA:
    if int(item) > 4:
         listB.append(item)
    else:
         item = item

print(listA)
print(listB)


有没有更有效,更快捷的方法?我敢肯定有,但是我对python的了解还不多,希望能为您提供帮助!

最佳答案

使用itertools.groupby

from itertools import groupby

for key, group in groupby(line.split(';'), key=lambda i: int(i) > 4):
    if key:
        for i in group:
            print(i)
    else:
        print(';'.join(group))


演示:

>>> for key, group in groupby(line.split(';'), key=lambda i: int(i) > 4):
...     if key:
...         for i in group:
...             print(i)
...     else:
...         print(';'.join(group))
...
4;4;4
8
4;4;4
9
9
4;4


groupby实用程序功能通过键对序列进行分组。在此,该值是否大于4;每次迭代都会给我们一个值序列,一个或另一个,如果当前组中的值确实更大,我们将它们打印在单独的行上,否则它们再次用分号连接到一个字符串中。

关于python - 如何拼接列表并使用拼接部分创建新列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17497323/

10-11 13:24