Python for循环结果转换成一列

如图,for循环后的结果好像不在同一列里,要怎么把它变成[1,2,3,4,5……]这样一列的形式呀?

ret = []
for i in range(cols): 
     lr =LinearRegression() 
     f=lr.fit(x[i*ys:i*ys+xs],y[i*ys:i*ys+xs]) 
     p=lr.predict(test[xs+i*ys:(xs+ys)+i*ys]) 
     pp= [j for item in p for j in item] 
     ret.extend(pp)
     
print(ret)

这样行不行 

就是这么多列数据都没在同一个[]里~

不用列表推导式[……for……]要怎么把这些数据放到同一列呀?

这个实在是太简单,不过没看到你的代码,也说不好。

假设你的代码函数是return 运算结果,而不是直接print运算结果,那么可以将运算结果append到一个列表中,再用列表推导式展开即可。

def a1():
    return [1,2,3]

def a2():
    return [4,5,6]

result = []
result.append(a1())
result.append(a2())
print(result)  # [[1, 2, 3], [4, 5, 6]]
re = [z for x in result for z in x]
print(re)  # [1, 2, 3, 4, 5, 6]

 

你好,你的代码里知道a1= [1, 2,3], 但是for循环出来的结果我不知道这最后一行怎么打印出来,比如图片里[1.47,5.21,10.66]这一行,我怎么弄都打印不出来。我的部分代码是这样的: for i in range(cols): lr =LinearRegression() f=lr.fit(x[i*ys:i*ys+xs],y[i*ys:i*ys+xs]) p=lr.predict(test[xs+i*ys:(xs+ys)+i*ys]) pp= [j for item in p for j in item] print(pp)

其实一直苦恼的问题是,不用列表推导式的情况下,为什么for循环的结果都不能再同一个[]里面~哎~

@CreateBig 赞!!!就是这个意思!!!哈哈哈哈哈哈 太棒啦!!!!谢谢你!!!

 

是我把print的缩进放在了for里,应该在for循环体外面的~

对于此类列表中的列表的折出,有三种常见方法:

方法1:

l=[[1,2,3],[4,5,6]]

ls=[]

for x in l:

    ls.extend(x)

print(ls)

方法二:

l1 = [[1, 2, 3], [4, 5, 6]]

ls1=[]

for x in l:

    ls1+=x

print(ls1)

方法三:

from itertools import chain

print([*chain.from_iterable(l)])