免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7105 | 回复: 12
打印 上一主题 下一主题

列表中套列表的python问题 [复制链接]

论坛徽章:
2
巨蟹座
日期:2014-10-26 19:52:562015年亚洲杯之乌兹别克斯坦
日期:2015-04-19 13:19:24
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-01-10 21:19 |只看该作者 |倒序浏览
我在实际编程中遇到这样的情况:
有list a, 假设
i=1, a=[1,2,3]
i=2,a=[[1,2,3],[4,5,6],[7,8,9]]
i=3,a=[[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[16,17,18]],[[19,20,21],[22,23,24],[25,26,27]]]
…………
如果我做一个for循环,假设每次都取最里边的第一个元素。循环变量i=1时,取a中元素我用b[0];
i=2, b[0][0];
i=3,b[0][0][0]
…………
问题:我现在知道了取不同i的时候逻辑上怎么取数据,但是编程上怎么实现,有没有简便的方法?

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-01-15 06:20:00操作系统版块每日发帖之星
日期:2016-01-16 06:20:00IT运维版块每日发帖之星
日期:2016-02-04 06:20:00数据库技术版块每日发帖之星
日期:2016-02-04 06:20:00程序设计版块每日发帖之星
日期:2016-02-10 06:20:01每日论坛发贴之星
日期:2016-02-10 06:20:01
2 [报告]
发表于 2016-01-11 13:53 |只看该作者
本帖最后由 zhonghua7896321 于 2016-01-11 13:55 编辑

b = "a"
for j in xrange(i):
     b += "[0]"
eval(b)     

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
3 [报告]
发表于 2016-01-11 15:48 |只看该作者
  1. #!/usr/bin/python
  2. # -*- coding:utf8 -*-

  3. a=[[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[16,17,18]],[[19,20,21],[22,23,24],[25,26,27]]]

  4. temp = a[:]
  5. c = 1
  6. n = 3 # 层级
  7. while True:
  8.     try:temp = temp[0]
  9.     except Exception:pass
  10.     if c >= n:
  11.         break
  12.     c+=1

  13. print temp
复制代码

论坛徽章:
2
巨蟹座
日期:2014-10-26 19:52:562015年亚洲杯之乌兹别克斯坦
日期:2015-04-19 13:19:24
4 [报告]
发表于 2016-01-11 17:11 |只看该作者
回复 2# zhonghua7896321
多谢,果然需要exec和eval这些用法


   

论坛徽章:
2
巨蟹座
日期:2014-10-26 19:52:562015年亚洲杯之乌兹别克斯坦
日期:2015-04-19 13:19:24
5 [报告]
发表于 2016-01-11 17:24 |只看该作者
回复 3# reyleon
这种写法也很优美,多谢!

   

论坛徽章:
2
巨蟹座
日期:2014-10-26 19:52:562015年亚洲杯之乌兹别克斯坦
日期:2015-04-19 13:19:24
6 [报告]
发表于 2016-01-12 09:39 |只看该作者
回复 3# reyleon
还有个问题也想请教下,如果在一个循环中,需要根据变量i定义内层循环的层数,比如for i in range(5), i=1,里面还有一层循环;i=2,里面还有两层循环;......
这种情况下怎么写呢?
   

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
7 [报告]
发表于 2016-01-12 09:43 |只看该作者
回复 6# Panyway


    不明白你说的意思

论坛徽章:
2
巨蟹座
日期:2014-10-26 19:52:562015年亚洲杯之乌兹别克斯坦
日期:2015-04-19 13:19:24
8 [报告]
发表于 2016-01-12 10:45 |只看该作者
回复 7# reyleon
比如说最外层有循环语句:
for i in range(5):
在这个循环中我要根据变量i写代码,这些代码也是循环,若:
i=1,代码为一层循环
for j in range(3):
    ......
若i=2,代码为两层循环
for j in range(3):
    for k in range(3):
        ......
......
......
若i=5,代码为五层循环
for j in range(3):
    for k in range(3):
        for l in range(3):
            for m in range(3):
                for n in range(3):
                    ......
依次类推,该怎么写呢?

   

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-01-15 06:20:00操作系统版块每日发帖之星
日期:2016-01-16 06:20:00IT运维版块每日发帖之星
日期:2016-02-04 06:20:00数据库技术版块每日发帖之星
日期:2016-02-04 06:20:00程序设计版块每日发帖之星
日期:2016-02-10 06:20:01每日论坛发贴之星
日期:2016-02-10 06:20:01
9 [报告]
发表于 2016-01-12 11:15 |只看该作者
回复 8# Panyway

--------------------------------------------------------------------------------------------------
实现代码
--------------------------------------------------------------------------------------------------
  1. a = 'test.py'
  2. with open(a, 'a+') as f:
  3.     for i in range(1,6):
  4.         j = ''
  5.         t = ''
  6.         c = '# current i value is : %d\n' % i
  7.         f.write(c)
  8.         for _ in range(i):
  9.             j += 'j'
  10.             t += '    '
  11.             str = "%sfor %s in range(3):\n" % (t, j)
  12.             f.write(str)
  13.         f.write("\n#===========================\n")

  14. # call the test.py file ...



  15. --------------------------------------------------------------------------------------------------
  16. 下边是生成的test.py文件
  17. --------------------------------------------------------------------------------------------------
  18. # current i value is : 1
  19.     for j in range(3):

  20. #===========================
  21. # current i value is : 2
  22.     for j in range(3):
  23.         for jj in range(3):

  24. #===========================
  25. # current i value is : 3
  26.     for j in range(3):
  27.         for jj in range(3):
  28.             for jjj in range(3):

  29. #===========================
  30. # current i value is : 4
  31.     for j in range(3):
  32.         for jj in range(3):
  33.             for jjj in range(3):
  34.                 for jjjj in range(3):

  35. #===========================
  36. # current i value is : 5
  37.     for j in range(3):
  38.         for jj in range(3):
  39.             for jjj in range(3):
  40.                 for jjjj in range(3):
  41.                     for jjjjj in range(3):

  42. #===========================
复制代码

论坛徽章:
2
巨蟹座
日期:2014-10-26 19:52:562015年亚洲杯之乌兹别克斯坦
日期:2015-04-19 13:19:24
10 [报告]
发表于 2016-01-12 11:39 |只看该作者
回复 9# zhonghua7896321
多谢大神回复!看来只能动态生成了,如果有种语法能定义循环的层数就好了。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP