如何用一行Python代码创建指定结构的嵌套列表?
实现10×10嵌套列表的一行代码方案
你使用a = ["-"]*10 * 10得到一维列表,是因为连续两次乘法会将["-"]*10的结果(10个'-'的列表)重复10次,最终合并成一个包含100个元素的一维结构,而非嵌套列表。
正确的一行代码实现方式有两种:
推荐写法(避免引用共享问题):
a = [["-"]*10 for _ in range(10)]
这个列表推导式会循环执行10次,每次生成一个独立的、包含10个'-'的列表,最终外层列表包含10个这样的内层列表,完全符合嵌套需求。而且每个内层列表都是独立对象,后续修改单个内层的元素不会影响其他内层。
简易写法(仅适用于元素不可变场景):
a = [["-"]*10]*10
这种写法也能生成嵌套结构,但所有内层列表实际上是同一个列表的引用。因为你的元素是不可变的'-',如果只是读取数据,这个写法可以正常工作;但如果后续需要修改某个内层的元素(比如a[0][0] = 'x'),所有内层列表的对应位置都会被修改,所以不推荐在需要修改的场景使用。
内容的提问来源于stack exchange,提问作者celibon
相关产品推荐
相关产品推荐

