生成一维列表:
1.要生成list [1, 2, 3, 4, 5, 6, 7,8, 9, 10]可以用range(1, 11)
如图所示:
2.要生成[1x1, 2x2, 3x3, …,10x10]也可以使用range(1,11)
如图所示:
解释:
写列表生成式时,把要生成的元素x(或x* x)放到前面,后面跟for循环,就可以把list创建出来。
注:for前后的元素应该是一样的。
3. 还可以for循环后面加上if判断,这样就可以进行筛选
如:筛选出仅偶数的平方
4.把列表中所有的字符串变成大写:
5.如果列表中既包含字符串,又包含整数,由于非字符串类型没有uppper()方法,所以列表生成式会报错,我们可以使用内建的isinstance函数可以判断一个变量是不是字符串,在for循环后面加上if判断,这样就可以进行转换:
解释:
isinstance()是Python中的一个内建函数。是用来判断一个对象的变量类型isinstance(object, classinfo)如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是False。
6.将其中的非字符串也输出,那么列表生成式为:
生成二维列表
1.使用*创建二维列表 :[[]]*n
结果发现修改一个元素,剩余的元素也会相应修改:
原因:
这种创建方式属于浅拷贝,即他们引用的是同一个地址,所以二维列表中的每个一维列表都相同。
附:浅拷贝和深拷贝的区别
浅拷贝是指源对象与拷贝对象共用一份实体(地址),仅仅是引用的变量不同(名称不同),对其中任何一个对象的改动都会影响另外一个对象。
深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。
2.直接创建:
3.使用for循环创建:
list=[[xfor i in range (5)]for j in range(7)]
x表示列表中的元素,x可以是整型,可以是字符型,也可以为空列表[]注: 使用for循环创建的二维列表修给单个元素时不会使整个列表都修改