鱼C论坛

 找回密码
 立即注册
查看: 3273|回复: 10

列表

[复制链接]
发表于 2015-3-31 16:57:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
对于列表:E = [[1, 2, 47, 6], [26, 27, 8, 7], [3, 28, 58, 48], [4, 5, 10, 49], [29, 38, 41, 31], [56, 39, 51, 59],
[57, 9, 52, 13], [40, 30, 32, 43], [11, 12, 53, 16], [50, 60, 18, 17], [42, 61, 64, 54], [14, 15, 20, 55],
[33, 44, 22, 21], [62, 45, 36, 35], [63, 19, 37, 23], [46, 34, 25, 24]]
I列表中数据对应列表E的值,也就是索引位置。
I = [ [ [0, 1], [0, 2], [1, 0], [1, 3]]     
,[[0, 2], [0, 3], [4, 1], [4, 0]]     
,[[1, 1], [1, 2], [2, 0], [2, 3]]     
,[[1, 2], [1, 3], [5, 1], [5, 0]]     
,[[2, 1], [2, 2], [3, 0], [3, 3]]     
,[[2, 2], [2, 3], [6, 1], [6, 0]]     
,[[3, 2], [3, 3], [7, 1], [7, 0]]     
,[[4, 1], [4, 2], [5, 0], [5, 3]]     
,[[4, 2], [4, 3], [8, 1], [8, 0]]     
,[[5, 1], [5, 2], [6, 0], [6, 3]]     
,[[5, 2], [5, 3], [9, 1], [9, 0]]     
,[[6, 1], [6, 2], [7, 0], [7, 3]]     
,[[6, 2], [6, 3], [10, 1], [10, 0]]   
,[[7, 2], [7, 3], [11, 1], [11, 0]]   
,[[8, 1], [8, 2], [9, 0], [9, 3]]     
,[[8, 2], [8, 3], [12, 1], [12, 0]]   
,[[9, 1], [9, 2], [10, 0], [10, 3]]   
,[[9, 2], [9, 3], [13, 1], [13, 0]]   
,[[10, 1], [10, 2], [11, 0], [11, 3]]
,[[10, 2], [10, 3], [14, 1], [14, 0]]
,[[11, 2], [11, 3], [15, 1], [15, 0]]
,[[12, 1], [12, 2], [13, 0], [13, 3]]
,[[13, 1], [13, 2], [14, 0], [14, 3]]
,[[14, 1], [14, 2], [15, 0], [15, 3]]]
现在我需要用程序得到一个包括四个元素的列表,这四个元素对应的值就是根据列表 I 中的索引位置在E中所对应的值。例如 列表I中[[0, 1], [0, 2], [1, 0], [1, 3]],在列表E中对应的值是[2,47,26,7],以此类推。
for i in range(len(I)):
        for j in range(len(I[i])):
                [x,y] = I[i][j]
                c = []
                c.append(E[x][y])

                print c
得到的结果是:
[2]
[47]
[26]
[7]
[47]
[6]
[38]
[29]
[27]
[8]
[3]
[48]
[8]
[7]
[39]
[56]
[28]
[58]
[4]
[49]
[58]
[48]
[9]
[57]
[10]
[49]
[30]
[40]
[38]
[41]
[56]
[59]
[41]
[31]
[12]
[11]
[39]
[51]
[57]
[13]
[51]
[59]
[60]
[50]
[9]
[52]
[40]
[43]
[52]
[13]
[61]
[42]
[32]
[43]
[15]
[14]
[12]
[53]
[50]
[17]
[53]
[16]
[44]
[33]
[60]
[18]
[42]
[54]
[18]
[17]
[45]
[62]
[61]
[64]
[14]
[55]
[64]
[54]
[19]
[63]
[20]
[55]
[34]
[46]
[44]
[22]
[62]
[35]
[45]
[36]
[63]
[23]
[19]
[37]
[46]
[24]

我想得到的结果是这种形式[ [2,47,26,7],[47,6,38,29]...]等等
求高手支招。谢谢。



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-3-31 17:29:44 | 显示全部楼层
  1. r = []
  2. for each in I:
  3.         c = []
  4.         for x, y in each:
  5.                 c.append(E[x][y])
  6.         r.append(c)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-31 17:56:23 | 显示全部楼层
  1. list1 = []
  2. list2 = []

  3. #将I列表拆解开,成为一个只有整数的列表,我喜欢这样,但其实没必要
  4. lengthI = len(I)
  5. for i in range(lengthI):
  6.      for j in range (4):
  7.          for k in range(2):
  8.             a = I[i][j][k]
  9.             list1.append(a)

  10. #循环读取列表E中对应的值,将之4个元素作为一个列表,加入到新列表中,应该是你缺少的程序
  11. length = len(list1)
  12. j = 0
  13. for i in range(7,length,8):
  14.      list3 = []
  15.      while j < i:
  16.          b = E[list1[j]][list1[j+1]]
  17.          list3.append(b)
  18.          j = j+2
  19.      list2.append (list3)

  20. print (list2)
复制代码
新手程序,请大神改进
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-31 19:20:56 | 显示全部楼层
gelebo 发表于 2015-3-31 17:56
新手程序,请大神改进

谢谢你的帮助。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-31 19:23:54 | 显示全部楼层
跑完之后 结果应该跟你想象中的是一样的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-31 19:30:38 | 显示全部楼层
gelebo 发表于 2015-3-31 19:23
跑完之后 结果应该跟你想象中的是一样的

是的,谢谢你  我是新手,只是需要用python编一些小程序处理数据,所以有点业余。{:1_1:}:hug::handshake
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-31 19:36:41 | 显示全部楼层
gelebo 发表于 2015-3-31 19:23
跑完之后 结果应该跟你想象中的是一样的

j = 0
for i in range(7,len(list1),8):#为什么是从7开始呢?
     list3 = []
     while j < i:
         b = E[list1[j]][list1[j+1]]
         list3.append(b)
         j = j+2
     list2.append (list3)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-31 20:45:58 | 显示全部楼层
  1. newlist = [[E[j[0]][j[1]] for j in i] for i in I]
  2. print(newlist)
复制代码

结果:
  1. [[2, 47, 26, 7], [47, 6, 38, 29], [27, 8, 3, 48], [8, 7, 39, 56], [28, 58, 4, 49], [58, 48, 9, 57], [10, 49, 30, 40], [38, 41, 56, 59], [41, 31, 12, 11], [39, 51, 57, 13], [51, 59, 60, 50], [9, 52, 40, 43], [52, 13, 61, 42], [32, 43, 15, 14], [12, 53, 50, 17], [53, 16, 44, 33], [60, 18, 42, 54], [18, 17, 45, 62], [61, 64, 14, 55], [64, 54, 19, 63], [20, 55, 34, 46], [44, 22, 62, 35], [45, 36, 63, 23], [19, 37, 46, 24]]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-1 09:43:43 | 显示全部楼层
厉害厉害~~~~
for i in I:
    for j in i:
       newlist = [E[j[0]][j[1]]
print(newlist)

跟我想象中一样,:loveliness:当初我也这样想来着~~~~~~~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-1 12:25:27 | 显示全部楼层
pytnon有列表推导
  1. result =[[E[x][y] for x, y in each_I] for each_I in I]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-1 15:52:43 | 显示全部楼层
no pain no gain
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-15 10:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表