如图,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)])