---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-72-d5b7704126f9> in <module>()
1 # del一个变量后不能在继续使用此变量
----> 2 del a
3 print(a)
NameError: name 'a' is not defined
使用加号链接两个列表
a =[1,2,3,4,5]
b =[5,6,7,8,9]
c =['a','b','c']
d = a + b + c
print(d)
[1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 'a', 'b', 'c']
使用乘号操作列表
列表直接跟一个整数相乘
相当于把n个列表接在一起
a =[1,2,3,4,5]
b = a *3print(b)
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
成员资格运算
判断一个元素是否在list里边
a =[1,2,3,4,5,6]
b =8
c = b in a
print(type(c))#c 的值是一个布尔值print(c)
b =4print(b in a)
<class 'bool'>
False
True
# not in
a =[1,2,3,4,5]
b =9print(b notin a)
True
链表的遍历
for
while
# for in list
a =[1,2,3,4,5]# 挨个打印a里边的元素for i in a:print(i)
1
2
3
4
5
# java, c++ 程序员写的python代码是这样的for i inrange(0,len(a)):print(a[i])
i +=1
1
2
3
4
5
b =["I love muluyuan"]for i in b:print(i)
I love muluyuan
# range# in 后面的变量要求是可以可迭代的内容for i inrange(1,10):print(i)print(type(range(1,10)))
# 双层列表循环#a 为嵌套列表,或者叫双层列表
a =[["one",1],["two",2],["three",3]]for k,v in a:print(k,"--", v)
one -- 1
two -- 2
three -- 3
# 双层列表循环变异#a 为嵌套列表,或者叫双层列表
a =[["one",1,"eins"],["two",2],["three",3,4,5,6,8]]for k,v in a:print(k,"--", v)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-19-792b9170ab7f> in <module>()
4 a = [["one", 1, "eins"], ["two", 2], ["three", 3,4,5,6,8] ]
5
----> 6 for k,v in a:
7 print(k, "--", v)
ValueError: too many values to unpack (expected 2)
# 双层列表循环变异#a 为嵌套列表,或者叫双层列表
a =[["one",1,"eins"],["two",2,"zwei"],["three",3,"drei"]]#这个例子说明,k,v,w的个数应该跟解包出来的变量个数一致for k,v,w in a:print(k,"--", v,"--",w)
one -- 1 -- eins
two -- 2 -- zwei
three -- 3 -- drei
列表内涵: list content
通过简单方法创作列表
# for 创建
a =['a','b','c']# 用list a创建一个list b# 下面代码的含义是,对于所有a中的元素,逐个放入新列表b中
b =[i for i in a]print(b)
['a', 'b', 'c']
# 对a中所有元素乘以10,生成一个新list
a =[1,2,3,4,5]# 用list a创建一个list b# 下面代码的含义是,对于所有a中的元素,逐个放入新列表b中
b =[i*10for i in a]print(b)
[10, 20, 30, 40, 50]
# 还可以过滤原来list中的内容病放入新列表# 比如原有列表a, 需要把所有a中的偶数生成新的列表b
a =[x for x inrange(1,35)]#生成从1到34的一个列表print(a)# 把a中所有偶数生成一个新的列表 b
b =[m for m in a if m %2==0]print(b)
c =[m for m in a if m %2==1]print(c)
# 列表生成式可以嵌套# 由两个列表a,b
a =[i for i inrange(1,4)]# 生成list aprint(a)
b =[i for i inrange(100,400)if i %100==0]print(b)# 列表生成是可以嵌套,此时等于两个for循环嵌套
c =[ m+n for m in a for n in b]print(c)
d =[ m*n for m in a for n in b]print(d)# 上面代码跟下面代码等价for m in a:for n in b:print(m+n, end=" ")print()# 嵌套的列表生城市也可以用条件表达式
e =[ m+n for m in a for n in b if m+n <250]print(e)
# len:求列表长度
a =[x for x inrange(1,100)]print(len(a))# max:求列表中的最大值# min: 同理print(max(a))# 字符串比较首字符ascii码大小
b =['manwoman','film','yzzhon','yzyzz']print(max(b))
# 删除# del 删除# pop,从对位拿出一个元素,即把最后一个元素取出来print(a)
last_ele = a.pop()print(last_ele)print(a)
[1, 2, 3, 666, 4, 100]
100
[1, 2, 3, 666, 4]
# remove:在列表中删除指定的值的元素# 如果被删除的值没在list中,则报错# 即,删除list指定值的操作应该使用try。。。excepty语句,或者先行进行判断# if x in list:# list.remove(x)
a.insert(4,666)print(a)print(id(a))
a.remove(666)print(a)print(id(a))# 输出两个id值一样,说明,remove操作是在原list直接操作
# copy: 拷贝,此函数是浅拷贝,# 列表类型变量赋值示例
a =[1,2,3,4,5,666]print(a)# list类型,简单赋值操作,是传地址
b = a
b[3]=777print(a)print(id(a))print(b)print(id(b))print("*"*20)# 为了解决以上问题,list赋值需要采用copy函数
b = a.copy()print(a)print(id(a))print(b)print(id(b))print("*"*30)
b[3]=888print(a)print(b)
# 深拷贝跟浅拷贝的区别# 出现下列问题的原因是,copy‘函数是个浅拷贝函数,即只拷贝一层内容# 深拷贝需要使用特定工具
a =[1,2,3,[10,20,30]]
b = a.copy()print(id(a))print(id(b))print(id(a[3]))print(id(b[3]))
a[3][2]=666print(a)print(b)