Python 是否可以使用列表理解转换代码

Python 是否可以使用列表理解转换代码,python,list,list-comprehension,Python,List,List Comprehension,我正在尝试转换显示列表的内容,以便每行只打印三个元素,并且能够使用if/else编写下面的代码,这是正常的 lst = ["s1","s2","s3","s4","s5","s6","s7","s8"] cnt=0 var4="" for i in range(len(lst)): if (cnt%3) =

我正在尝试转换显示列表的内容,以便每行只打印三个元素,并且能够使用if/else编写下面的代码,这是正常的

lst = ["s1","s2","s3","s4","s5","s6","s7","s8"]

cnt=0
var4=""

for i in range(len(lst)):
    if (cnt%3) == 0:
        var4 = var4 + "\n" + lst[i]
    else:
        var4 = var4 + ", " + lst[i]
    cnt +=1 
    
print(var4)
输出:

s1, s2, s3
s4, s5, s6
s7, s8
试着找出是否同样的结果可以通过列表理解或其他有效的可能方式实现


谢谢

不确定这是否是您要寻找的,但这里有一个解决方案,使用列表理解和
join

lst = ["s1","s2","s3","s4","s5","s6","s7","s8"]

block_size = 3

lines = [", ".join(lst[i:min(len(lst), i + block_size)]) for i in range(0, len(lst) + block_size, block_size)]

print("\n".join(lines))

它不是列表理解打印(“”.join(“{0}{1}.”格式(元素“\n”)如果(索引+1)%3==0其他“{0},”.format(元素)用于索引,元素用于枚举(lst)])
print(“”.join(v+”,如果i%3其他“\n”)用于枚举中的i,v([“s1”,“s2”,“s3”,“s4”,“s5”,“s7”,“s8”],start=1))。rstrip(“”,“,”)
但这并不是对普通风格的改进。谁关闭了这个?这甚至与将列表拆分为大小相等的块无关。没有OP想要的那么长。