Python语法学习记录(5):LIST 用法

#列表初始化及打印
print("===="*5,"列表初始化及打印:")
list1 = ['ele1','ele2','ele3']
print(type(list1))
print("列表打印",list1)
print("list1[1]:",list1[1])# 小标,角标,索引 0 1 2 
print("list1[-1]:",list1[-1])#从右边往左数1个元素下标是-1
print("list1[-2]:",list1[-2])#从右边往左数2个元素下标是-2
print("list1[-3]:",list1[-3])#从右边往左数3个元素下标是-3
#print("list1[-4]:",list1[-4])#从右边往左数3个元素下标是-3
#小于-3,大于2的索引会报错
print("list1[0:2]:", list1[0:2])
print("list1[1:]:", list1[1:])
print("list1[:2]:", list1[:2])

print("===="*5,"列表化:")
list0 = list(range(0 , 99))
list1 = list('12')
list2 = list('12.4')
list3 = list('hello')
print("列表打印",list0)
print("列表打印",list1)
print("列表打印",list2)
print("列表打印",list3)


#列表增加append
list1 = ['ele1','ele2','ele3']
print("===="*5,"列表增加append:")
print("列表打印",list1)
list1.append('ele4') # append,增加到末尾
print("列表打印",list1)

#列表增加insert
print("===="*5,"列表增加insert:")
list1.insert(0,'ele0')# insert,在指定是位置增加元素
list1.insert(6,'ele5')# insert 如果指定的小标不存在,那么就在末尾添加
list1.insert(-1,'ele6')# 注意:insert不要用-1,位置不对    重要
print("列表打印",list1)

# 修改,即赋值
# 替换list1[6]list1[7]
print("===="*5,"修改赋值list1[5]list1[6]:")
print("列表打印",list1)
t=list1[6]
list1[6]=list1[5]
list1[5]=t
print("列表打印",list1)

# 查找某个字符在字符串中
list1 = ['ele1','ele2','ele3']
print("===="*5,"查找元素在字符串中")
if 'ele1' in list1:
    print('ele1 is in')
else:
    print('ele1 is not in')
if 'ele10' in list1:
    print('ele10 is in')
else:
    print('ele10 is not in')

# 查看某个元素在数组里面的个数,count,不存在返回0
print("===="*5,"查找元素个数")
print(list1.count('ele10'))
print(list1.count('ele1'))
# 找到元素的索引,如果有多个找到第一个,如果找到一个不存在的,就报错
print("===="*5,"找到元素的索引")
#print(list1.index('ele10'))
print(list1.index('ele2'))



# 删除pop
list1 = ['ele1','ele2','ele3']
print("===="*5,"删除pop")
print("列表打印",list1)# pop默认删除最后一个元素,可以指定下标删除
list1.pop()
print("列表打印",list1)
list1.pop(0)
print("列表打印",list1)
print("pop :",list1.pop())# 删除直接打印,会将删除的值返回
print("列表打印",list1)

# 删除remove 删除不会打印自己 
print("===="*5,"删除remove")
list1 = ['ele1','ele2','ele3','ele4']
list1[2]=list1[3]
print("列表打印",list1) #删除遇到的第一个元素
list1.remove('ele4')
print("列表打印",list1)
list1.remove('ele4')
print("列表打印",list1)

# 删除del 删除指定元素
print("===="*5,"删除del")
del list1[0]
print("列表打印",list1)

# clear 清空整个list
print("===="*5,"清空整个list")
list1.clear()
print("列表打印",list1)



# copy kaobei整个list
list1 = [1,2,3]
print("===="*5,"copy整个list")
list2 = list1.copy()
print("列表打印",list2)

[外链图片转存失败(img-4puK9rIt-1567578572671)(https://i.loli.net/2019/05/26/5ceab3e775ed160686.png)]



# reverse,反转list
list1 = [1,2,3]
print("===="*5,"反转list")
print("列表打印",list1)
list1.reverse()
print("列表打印",list1)

# sort 排序,默认升序
list1 = [11,200,3]
print("列表打印",list1)
list1.sort()
print("列表打印",list1)
list1.sort(reverse=True)# 注意:按照降序排,sort指定reverse=True
print("列表打印",list1)


#求长度
print("===="*5,"求长度len")
list1 = [11,200,3]
print("长度:",len(list1))



#+:它主要实现的是多个列表之间的拼接
#*:主要实现的是列表的复制和添加
#比较>,<:主要进行数据型列表的元素比较
#and等:;逻辑运算符,可以进行列表之间的逻辑判断

#列表的运算  加法
#效率低于extend
print("===="*5,"列表的运算:加法")
list1 = [1,2,3]
list2 = [4,5,6]
list3 = list1 + list2
#list4 = list3 - list1   没有减法
print("列表打印list3:",list3)
#列表的运算  乘法
print("===="*5,"列表的运算:乘法")
list4 = list1*3
print("列表打印list4:",list3)
#列表大小比较
print("===="*5,"列表大小比较")
import operator
a = [1,2,3]
b = [1,2,3]
c = [1,2,0]
print(operator.lt(c,b)) #相当于a<b      less than    从第一个数字或字母(ASCII)比大小
print(operator.le(c,b)) #相当于a<=b     less and equal
print(operator.eq(a,b)) #相当于a==b     equal        字母完全一样,返回True,
print(operator.ne(c,b)) #相当于a!=b     not equal
print(operator.gt(a,c)) #相当于a>b      greater than
print(operator.ge(a,c)) #相当于a>=b     greater and equal

#最大值最小值及其所在位置
print("===="*5,"最大值最小值及其所在位置")
a = [1,2,3]
print("最大值:",max(a))
print("最大值所在位置:",a.index(max(a)))
print("最小值:",min(a))
print("最小值所在位置:",a.index(min(a)))


#============================================================================
# 二维数组
print("===="*5,"二维数组")
list2 =[1,2,[31,32]]#实际是个长度为三的list   list2[2]为又一个list
print("二维数组列表打印list2:",list2)
print("len of list2:",len(list2))
print("list2[0]:",list2[0])
print("list2[1]:",list2[1])
print("list2[2]:",list2[2])
print("list2[2][0]:",list2[2][0])
print("list2[2][1]:",list2[2][1])
list2 =[[1,2],[31,32]]#实际是个长度为三的list   list2[2]为又一个list
print("二维数组列表打印list2:",list2)
print("len of list2:",len(list2))
print("list2[0]:",list2[0])
print("list2[0][0]:",list2[0][0])
print("list2[0][1]:",list2[0][1])
print("list2[1]:",list2[1])
print("list2[1][0]:",list2[1][0])
print("list2[1][1]:",list2[1][1])

# 三维数组
print("===="*5,"三维数组")
list3 =[2,5,[1,7,[0,10]]]#实际是个长度为三的list   list3[2]为又一个list
print("三维数组列表打印list3:",list3)
print("len of list3:",len(list3))
print("list3[0]:",list3[0])
print("list3[1]:",list3[1])
print("list3[2]:",list3[2])
print(list3[-1][-1][-1])   # 打印最后一个

# 合并两个数组extend
print("===="*5,"合并两个数组extend")
list2 =[[1,2],[31,32]]
list2.extend(list3)
print("列表打印list2:",list2)
print("len of list2:",len(list2))
print("===="*5,"合并两个数组append")
list2 =[[1,2],[31,32]]
list2.append(list3)
print("打印list2:",list2)
print("len of list2:",len(list2))

#============================================================================
# 循环
print("===="*5,"循环")
list1 = [[1] for i in range(3) ]
print("打印list1:",list1)
list1[0].append(3)
list1[1].append(5)
list1[2].append(7)
print("打印list1:",list1)

print("===="*5,"循环")
list1 =['ele0','ele1','ele2']
for ele in list1: #如果直接for循环一个list的时候,那面每次循环的值是这个list里面的元素,换行打印list数组里面的元素
    print(ele)

# 循环,同时打印索引和数组值enumerate(枚举),必须含有两个参数
print("===="*5,"循环enumerate(枚举)")
for index, item in enumerate(list1):#i,v随意注册的变量
    print ("index = %s,value = %s" % (index, item)) # index = 0,value = cm1

print("===="*5,"循环range")
for i in range(len(list1)):
	print ("index = %d,value = %s" % (i, list1[i]))

# 注意:循环list时,不能有删除的操作,因为一旦删除一次,list就变化,如下:删除所有奇数
# 错误写法
#在进行删除后 list数据变少更新之后  迭代器可能仍然按照原来的地址进行迭代寻址
print("===="*5,"删除操作错误写法")
list1 = [1,1,2,3,4,5,6,7,8,9]
for ele in list1:
    print("this turn ele is :",ele)
    if ele%2!=0:
        list1.remove(ele)
        print("after remove list is:",list1)
print("打印list1:",list1)

print("===="*5,"删除操作错误写法浅拷贝")
list1 = [1,1,2,3,4,5,6,7,8,9]
list2 = list1
# 注意:不能用list2=list1,指针一样
# 注意:list2=list1浅拷贝
# 注意:list2 =list1[:]深拷贝
# 深浅拷贝的区别,内存地址是否变化 参考下面的打印地址部分
for ele in list2:
    print("this turn ele of list2 is :",ele)
    if ele%2!=0:
        list1.remove(ele)
        print("after remove list1 is:",list1)
print("打印list1:",list1)

# 正确写法
# remove(),()中是值
print("===="*5,"删除操作正确写法")
list1 = [1,1,2,3,4,5,6,7,8,9]
list2 = list1[:]
for i in list2:
    if i%2!=0:
        list1.remove(i)
print("打印list1:",list1)     
print("打印list2:",list2)


# 打印list的地址id()
print("===="*5,"打印list的地址id")
list1 = [1,2,3,4,5,6,7,8,9]
list2 = list1
list3 = list1[:]
print("打印list1:",list1)     
print("打印list2:",list2)
print("打印list3:",list3)     
print("List1地址:",id(list1))
print("List2地址:",id(list2))
print("List3地址:",id(list3))

#============================================================================
# 切片:list取值的一种方式,顾头不顾尾
print("===="*5,"list的切片(顾头index不顾尾index)")
list1 = [1,2,3,4,5,6,7,8,9]
print("打印list1:",list1)
slice_list1 = list1[0:1] #取list1[index1]直到list1[index2],不取list1[index2]
print("打印slice_list1=list1[0:1]:",slice_list1)
slice_list2 = list1[:3] # 如果切片前面一个值不写的话  从开头开始取  直到list1[index1] 不取list1[index1]
print("打印slice_list2=list1[:3]:",slice_list2)
slice_list3 = list1[3:] # 如果切片后面一个值不写的话  从list1[index1]开始取  直到末尾 取末尾
print("打印slice_list3=list1[3:]:",slice_list3)
slice_list4 = list1[:] # 如果切片前面后面的值都不写的话,全部取出来
print("打印slice_list4=list1[:]:",slice_list4)
#切片之后地址均不一样
print("list1地址      :",id(list1))
print("slice_list1地址:",id(slice_list1))
print("slice_list2地址:",id(slice_list2))
print("slice_list3地址:",id(slice_list3))
print("slice_list4地址:",id(slice_list4))
#插入新值
print("===="*5,"list的切片插入新值")
list1 = [1,10,100,1000]
print("打印list1:",list1)
list1[1:1] = [2,3,4]
print("打印list1:",list1)
print("===="*5,"list的切片删除元素")
#删除元素
list1[1:4] = []
print("打印list1:",list1)


# 步长,常用概率高:间隔几个取一个
print("===="*5,"list的切片(步长)")
list1 = [1,2,3,4,5,6,7,8,9]
#new_slice_list = list1[index1:index2:step] 
# 从index1取到index2,步长为step
slice_list1 = list1[::1]
slice_list2 = list1[::2]
slice_list3 = list1[::3]
print("步长是正数时,从左往右取")
print("步长1:",slice_list1) 
print("步长2:",slice_list2) 
print("步长3:",slice_list3) #不够则结束
slice_list_1 = list1[::-1]
slice_list_2 = list1[::-2]
slice_list_3 = list1[::-3]
print("步长是负数时,从右往左取")
print("步长-1:",slice_list_1)
print("步长-2:",slice_list_2)
print("步长-3:",slice_list_3)
new_slice_list1 = list1[1:5:1]
print("start: 1 end: 5 step: 1:",new_slice_list1)#用的频率低,最后是-1,代表从右向左取值,小标依次为-1、-2、-3,取头不取尾,所以不取-3的值
new_slice_list2 = list1[-1:-5:-1]
print("start:-1 end:-5 step:-1:",new_slice_list2)#用的频率低,最后是-1,代表从右向左取值,小标依次为-1、-2、-3,取头不取尾,所以不取-3的值
new_slice_list3 = list1[1:5:-1]
print("start: 1 end: 5 step:-1:",new_slice_list3)#用的频率低,最后是-1,代表从右向左取值,小标依次为-1、-2、-3,取头不取尾,所以不取-3的值

#============================================================================
#特殊方法初始化列表
print("===="*5,"特殊方法初始化列表")
list1 = [6]*5
print("打印list1:",list1)
list1 = [6 for i in range(0, 5)]
print("打印list1:",list1)
list1 = [[] for i in range(0, 5)]
print("打印list1:",list1)
list1 = [i+1 for i in range(0, 5)]
print("打印list1:",list1)
list1 = [i+1 for i in range(0, 5)]
print("打印list1:",list1)
list1 = [[i for i in range(0, 5)]  for j in range(5)]
print("打印list1:",list1)
list1 = [(i, j) for i in range(0,5) for j in range(0,5) ]
print("打印list1:",list1)
list1 = [ele for ele in [(i, j)for i in range(5) for j in range(5)]]
print("打印list1:",list1)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值