鱼C论坛

 找回密码
 立即注册
查看: 1490|回复: 7

[已解决]如何快速生成列表

[复制链接]
发表于 2018-1-3 20:49:01 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 jle55555 于 2018-1-3 20:50 编辑

请问如何用列表解析式或代码生成一个大列表,其中包含11个小列表,每个小列表包含有17个元素?
例子如下图,这个图是我手输的,想请教简便方法,如果列表更复杂的话手输非常麻烦,谢谢大家!
最佳答案
2018-1-4 08:19:46
  1. >>> a = [[10]+[0]*16]+[[10]+['z']*16]*12
  2. >>> for i in a:
  3.         print(i)

  4.        
  5. [10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
  6. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  7. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  8. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  9. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  10. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  11. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  12. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  13. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  14. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  15. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  16. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  17. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  18. >>>
复制代码
问题.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-3 20:57:18 | 显示全部楼层
c=[['z']*12]*8
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-4 00:27:14 | 显示全部楼层
我可能有神经病
1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-4 08:19:46 | 显示全部楼层    本楼为最佳答案   
  1. >>> a = [[10]+[0]*16]+[[10]+['z']*16]*12
  2. >>> for i in a:
  3.         print(i)

  4.        
  5. [10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
  6. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  7. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  8. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  9. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  10. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  11. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  12. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  13. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  14. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  15. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  16. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  17. [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
  18. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-4 10:16:39 | 显示全部楼层

感谢你的回答,但在操作列表过程中又出现了问题:
a[1][1]='xyz'
执行以上代码,所有列表的第一个'z'都替换为了'xyz',请问是怎么回事?又如何解决?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-4 10:18:33 | 显示全部楼层

谢谢大神,你昨晚还回答了我一个问题,再请问下:
c=[['z']*12]*8
c[0][0]='xyz'
执行以上代码,发现每个小列表的第0个元素都被替换成了'xyz',请问这是什么情况,如何解决?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-7 15:55:10 | 显示全部楼层
本帖最后由 久疤K 于 2018-1-7 15:56 编辑
jle55555 发表于 2018-1-4 10:16
感谢你的回答,但在操作列表过程中又出现了问题:
a[1][1]='xyz'
执行以上代码,所有列表的第一个'z'都 ...


不好意思,这几天没有上网站。。

我猜,这个 * 操作,实际上是浅拷贝。
通过如下实验可以猜测
  1. >>> c = [['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']]
  2. >>> c[0][0] = 123
  3. >>> c
  4. [[123, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']]
  5. >>> c=[['z']*12]*8
  6. >>> c[0][0] = 123
  7. >>> c
  8. [[123, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [123, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [123, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [123, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [123, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [123, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [123, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [123, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']]
复制代码

可以通过如下解决
  1. >>> import copy
  2. >>> a = [[10]+[0]*16]+[[10]+['z']*16]*12
  3. >>> a = copy.deepcopy(a)
  4. >>> a[0][0] = 'xyz'
  5. >>> a
  6. [['xyz', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], [10, 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']]
  7. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-7 15:57:48 | 显示全部楼层
久疤K 发表于 2018-1-7 15:55
我猜,这个 * 操作,实际上是浅拷贝。
通过如下实验可以猜测

嗯嗯,确实是浅拷贝,十分感谢!也可以通过生成二维数组后赋值来解决
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-5 09:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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