关于python列表的循环

2012-03-28 18:18:31 +08:00
 kojp
lista=['la','lb','lc']
listb=['l1','l2','l3']
listc=['lA','lB','lC']


listok=[lista[0],listb[0],listc[0],listd[0]]
listok1=[lista[1],listb[1],listc[1],listd[0]]

listoks.append(listok)
listoks.append(listok1)

listoks是我所需要的~~~

敢不敢有比较优雅的方法?

for ..in .

或者

lamda ..

完全用不上。脑子短路了~~~
5240 次点击
所在节点    Python
8 条回复
fanzeyi
2012-03-28 18:30:13 +08:00
没明白楼主是想干啥……
kojp
2012-03-28 18:31:41 +08:00
@fanzeyi

呃。脑子短路。现有点进展了~~~但还是没解决。大概就是想用一个循环或者什么的。

把已经有的几个列表元素写到另外一个列表里面

lista=['la','lb','lc']
listb=['l1','l2','l3']
listc=['lA','lB','lC']
listd=['L0','L1','L2']

listoko=[]
for i in range(0,3):
listoko=[lista[i],listb[i],listc[i]]
print listoko
fanzeyi
2012-03-28 18:33:40 +08:00
In [25]: zip(lista,listb,listc,listd)
Out[25]: [('la', 'l1', 'lA', 'L0'), ('lb', 'l2', 'lB', 'L1'), ('lc', 'l3', 'lC', 'L2')]

类似这样?
kojp
2012-03-28 18:36:13 +08:00
for i in range(0,3):
print i
listoko.append([lista[i],listb[i],listc[i]])
#listoko.append('ahah')
print listoko
print "nothing"*10


总算OK了!!

好像不到V2EX上来取一下耻。大脑就不会通的。。呵呵

(短路的原因是,对list.append的返回值理解错误~~~,以及对循环的恐惧症)
kojp
2012-03-28 18:38:35 +08:00
@fanzeyi
谢谢~~~

我苦思冥想了半天。。原来就一个zip搞定了~~~
话说,我对着书敲代码的时候也用过ZIP的~~~呃。怎么就联系不起来呢。杯具!哎
yangguang
2012-03-28 18:43:47 +08:00
lista=['la','lb','lc']
listb=['l1','l2','l3']
listc=['lA','lB','lC']

listoks = [map(lambda x: x[i], [lista, listb, listc]) for i in range(2)]
013231
2012-03-28 19:31:10 +08:00
列表推导式也可以:
[[lst[r] for lst in (lista, listb, listc)] for r in range(len(lista))]
kojp
2012-03-28 19:36:45 +08:00
@013231

我要一开始想要 的就是这段 这个比较酷的代码 ....以前还能记住的 ,现在连理解都要绕半圈了

------但是 ,有 zip的话 ,更 easy哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/30781

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX