列表的基本函数

range(3) #小于3的整数:0,1,2

range(1,10) #大于等于1小于10的整数,即[1,10)

range(1,10,2)#大于等于1小于10的整数,步长为2,即1,3,5,7,9

lst1= [1,2,3,4]

lst2= ["zhangsan","lisi","wangwu"]

len(lst1)#求数组的长度,输出为4

max(lst1) #求数组的最大值

min(lst1) #求数组的最小值

st = "i love you"list(st)#转换为列表格式,结果为['i', ' ', 'l', 'o', 'v', 'e', ' ', 'y', 'o', 'u']

切片数组元素

alist = ["zhangsan","lisi",1,2,3]

alist[1:3] #切片索引[1,3),结果为["lisi",1]

alist[1:] #切片索引1到最后,结果为["lisi",1,2,3]

alist[1:-1] #切片索引1到倒数第2个,-1表示最后一位,但是不包括,结果为["lisi",1,2]

alist[1:-1:2] #切片索引1到倒数第2个,步长为2,结果为["lisi",2]

alist[2::-2] #从索引2开始,右向左切片,步长为负数表示从右向左取值,结果为[1,"zhangsan"]

lst = [1,2,3,4,5,6,7]

print(lst[-2:-4]) #输出为空

print(lst[-4:-2]) #输出[4,5],默认情况只能从左至右切片,且包含左边不包含右边,数组的最后一个元素的索引为-1.到处第二个索引为-1,以此类推

id函数

id函数的参数为需要查询的变量,返回值为该变量的id,id是变量的唯一标识

a = 100b = 200

print("id of a: {0}".format(id(a)))

print("id pf b: {0}".format(id(b)))

c =a

print("id of c: {0}".format(id(c))) #c与a为同一个变量,id相同

a= 101

print("id of a: {0}".format(id(a))) #a一旦被修改,id发生变化

print("id of c: {0}".format(id(c))) #c的id不变

输出为

id of a: 140707208945792id pf b: 140707208948992id of c: 140707208945792id of a: 140707208945824id of c: 140707208945792id of b: 140707208949024

所有的分片操作是产生了一个新的数组,而不是在原数组上操作,原数组仍然保持不变。

lst1 = [1,2,3]

lst2= lst1[:] #切片list所有元素

lst3 = lst1 #lst3指向lst1的列表

print(id(lst1))print(id(lst2)) #切片所得到的lst2与lst1的id不同

print(id(lst3)) #lst3与lst1的id相同

print("*"*20)

lst1[1] = 100

print(id(lst1))print(id(lst2)) #切片所得到的lst2与lst1的id不同

print(id(lst3)) #lst1的第一个元素被修改,lst3和lst1的的id仍然保持一致

print("*"*20)print(lst1)print(lst2) #lst1被修改,不影响lst2列表,lst2继续保持不变

print(lst3) #lst1被修改,lst3也被修改,因为lst3和lst1指向同一个列表

输出为

2181593850440

2181593850504

2181593850440

********************

2181593850440

2181593850504

2181593850440

********************[1, 100, 3]

[1, 2, 3]

[1, 100, 3]

插入数组元素

aList = ["zhangsan","lisi",1,2,3]

bList= ["wangwu",4]

aList.append(5) #在aList数组末尾加上元素5, 数组为["zhangsan","lisi",1,2,3,5]

bList.insert(1,"xixi") #在bList数组的索引为1的位置插入元素xixi,数组为["wangwu","xixi",4]

aList.extend(bList) #将数组bList加入到数组aList中,aList为 ["zhangsan","lisi",1,2,3,"wangwu",4],bList不变

删除数组元素

alist=[1,2,3]

blist=[“huawei”,"sanxing","xiaomi"]

alist.pop(0)#删除数字第1个元素,删除后的数组为[2,3]

alist.pop() #默认删除数字第1个元素,删除后的数组为[2,3]

alist.remove("sanxing") #删除索元素"sanxing",删除后的数组为[“huawei”,"xiaomi"],此处的参数只能是元素值不能是索引,如果列表中没有这个数则报错

del blist[2] #删除blist[2]元素,[]括号内必须是索引

del blist #删除整个数组

修改数组元素

a = ["zhangsan","lisi",1,2,3]

b= ["wangwu",4]

a[1] = 5 #修改后的数组为["zhangsan",5,1,2,3]

a[1:3] = ["update1","update2] #修改后的数组为["zhangsan","update1","update2",2,3]

列表排序

srt=["A","b","D","d"]

srt.sort()#将数组按照ASCII码升序排列(默认即为升序),排序后的数组为['A', 'D', 'b', 'd']

srt.sort(reverse=True) #将数组按照ASCII码降序排列,排序后的数组为['d', 'b', 'D', 'A']

sorted(srt)#将srt数组排序,但是并没有改变srt数组本身的顺序,只是返回排序后的新数组

sorted(srt,reverse=True)

其他操作

a = [1,2,3]

b= ['a','b','c']

c= a +b

print(c) #a和b两个数组合并

d= b * 3#b数组扩大3倍

print(d)

输出为

[1, 2, 3, 'a', 'b', 'c']

['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']

1 in a #判断元素"A"是否在数组中,此处返回Ture"c" not in b#判断元素"d"是否不在数组中,此处返回False

type(a)is list #判断对象srt是否为list类型,此处返回True

嵌套列表/双层列表

lst = [["one",1,"a"],["two",2,"b"],["three",3,"c"]]for k,v,w inlst:print(k,"...",v,"...",w)

输出为

one ... 1... a

two ...2... b

three ...3 ... c

列表生成器,嵌套列表生成器

#使用列表a创建列表b

a = [1,2,3]

b= [i for i ina]print(a)print(b) #列表b和a的内容完全一致

c= [i*10 for i in a] #对a中的每个元素乘以10,生成一个新的列表

print(c)

d= [x for x in range(1,10)] #生成一个1到9的列表

print(d) #输出[1, 2, 3, 4, 5, 6, 7, 8, 9]

e = [y for y in d if y%2==0] #取出列表d中的所有偶数生成新的列表

print(e) #输出[2, 4, 6, 8]

a= [1,2,3]

b= [100,200]

c= [i+j for i in a for j in b if i+j<200] #列表生成器可以嵌套,a在外层b在里层

print(c) #输出[101, 102, 103]

参数传递

对于简单的数值(如int, float, string),采用传值,即在函数内的操作不影响函数外的该变量

对于复杂的数值(如list, set, dict等),采用传址,即指向的是同一个地址,任何一个地方此内容的修改,都会影响其他地方的该变量

deffunc1(lst):

lst[0]= 101

print("in func1, lst:", lst)returnNonedeffunc2(num):

num+= 100

print(num)returnNonedeffunc3(st):

st= "updated"

print("in func3, str:", st)returnNone

l= [1,2,3,4,5]print(l) #输出[1,2,3,4,5]

func1(l) #传地址,而不是传值,因此,参数在函数内被修改,会体现到函数外

print(l) #输出[101,2,3,4,5]

n= 1

print(n) #输出1

func2(n) #传值,而不是传地址,因此,参数在函数内被修改,不会体现到函数外

print(n) #输出1

st= "initiated"

print(st) #输出initiated

func3(st) #传值,而不是传地址,因此,参数在函数内被修改,不会体现到函数外

print(st) #输出initiated

Copy函数

a = [1,2,3,4,5]

b= a #传地址,因此a和b指向同一个位置

print(id(a),"-->",a)print(id(b),"-->",b)

b[3]=100 #修改b的数据,同样a也会被修改

print(a)print(b)

c= a.copy() #传值,c是a的另一份拷贝,指向不同的位置

print(id(a),"-->",a)print(id(c),"-->",c)

c[1] = 200 #修改c的值,a不受影响

print(a)print(c)

输出为

2428798001736 --> [1, 2, 3, 4, 5]

[1, 2, 3, 100, 5]

[1, 2, 3, 100, 5]2428798001736 --> [1, 2, 3, 100, 5]2428798492552 --> [1, 2, 3, 100, 5]

[1, 2, 3, 100, 5]

[1, 200, 3, 100, 5]

深拷贝、浅拷贝,copy函数只浅拷贝函数,只拷贝一层内容:

a = [1,2,3,[4,5,6]]

b=a.copy()print(id(a))print(id(b)) #传值,a和b指向不同的空间

print("*"*20)print(id(a[3]))print(id(b[3])) #a[3]和b[3]指向同一个空间,第二层内容不再拷贝,只传址

a[3][0] = 100

print(a[3])print(b[3]) #修改a[3]的任意值,b[3]也会被修改

上述代码中的变量a相当于,a[3]相当于一个指针指向另外一个数组:

输出为

2056105648776

2056106139464

********************

2056105648712

2056105648712[100, 5, 6]

[100, 5, 6]

python画老虎_Python数据结构:列表相关推荐

  1. python 画老虎

    好的,下面是一个使用 Python 画老虎的示例代码: # 导入必要的库 import turtle# 创建一个海龟画图窗口 t = turtle.Turtle()# 画老虎的身体 t.color(& ...

  2. 用python画树林_python实现画一颗树和一片森林

    本文实例为大家分享了python画一颗树和一片森林的具体代码,供大家参考,具体内容如下 实现效果 代码在这里 from turtle import Turtle def tree(plist, l, ...

  3. python画蝴蝶_python画蝴蝶曲线图的实例

    蝴蝶曲线是由Temple H·Fay发现的可用极坐标函数表示的蝴蝶曲线. 由于此曲线优美, 因此就想把它作为博客favicon.ico,这里我使用pytho matplotlib.pyplot包来绘制 ...

  4. python遍历树结构_python 数据结构与算法——树的遍历

    1.广度优先遍历 2.深度优先遍历 先序遍历:把根放在最前面 中序遍历:把根放在中间 后序遍历:把根放在后面 # -*- coding: utf-8 -*- """ Cr ...

  5. python 画蝴蝶_python画蝴蝶曲线图的实例

    蝴蝶曲线是由Temple H·Fay发现的可用极坐标函数表示的蝴蝶曲线. 由于此曲线优美, 因此就想把它作为博客favicon.ico,这里我使用pytho matplotlib.pyplot包来绘制 ...

  6. python画树干_python教你画一棵树

    最近不少读者对 python 的 turtle 库比较感兴趣, 用python画一朵玫瑰给你 ,之前也写了一篇文章讲过如何画一朵玫瑰花.今天在知乎上找了一个用 turtle 画树的 python 程序 ...

  7. python画圣诞树_python画圣诞树

    使用python画一棵圣诞树 height = 5stars = 1for i in range(height): print((' ' * (height - i)) + ('*' * stars) ...

  8. 用python画大白_Python turtle 画个大白

    今天用Python Turtle画个大白吧.效果图如下: Python画大白def bai(): #tracer(False) speed(0) pensize(5) color('black','w ...

  9. 用python画蝴蝶_python画蝴蝶曲线图的实例

    蝴蝶曲线是由Temple H·Fay发现的可用极坐标函数表示的蝴蝶曲线. 由于此曲线优美, 因此就想把它作为博客favicon.ico,这里我使用pytho matplotlib.pyplot包来绘制 ...

最新文章

  1. solr java score_Solr 按照得分score跟指定字段相乘排序
  2. 优秀的缓存工具Memcached
  3. 学习SpringMVC笔记——Intellij IDEA创建SpringMVC项目
  4. [Python图像处理] 二十五.图像特效处理之素描、怀旧、光照、流年以及滤镜特效
  5. PHP realpath() 函数
  6. 判断一个单链表中是否存在环
  7. arm ida 伪代码 安卓 符号表_使用IDA动态调试及ARM指令学习笔记
  8. goaheadlinux移植_goahead
  9. 提高Axure设计效率的10条建议 (转)
  10. GPS时间服务器在电力监控系统中的应用方案
  11. AS解决在导入library之后lable/icon/theme合并出现bug
  12. QQ互联 成为开发者登录后没跳转
  13. Centos7配置阿里云的镜像加速器(2)
  14. UR5+robotiq_85_gripper GAZEBO模拟视觉抓取平台仿真-1
  15. java io流分为,Java中的IO流按照传输数据不同,可分为和
  16. 【腾讯Bugly干货分享】手游热更新方案xLua开源:Unity3D下Lua编程解决方案
  17. 30K的月薪,是个什么段位?
  18. Android 花里胡哨的加载Loading动画
  19. echarts K线图candlestick
  20. 什么是看跌期权?是做空吗?

热门文章

  1. web安全|渗透测试|网络安全04天
  2. 一台电脑连接多个同种USB摄像头区分测试
  3. 哪款无线耳机通话效果好?无线蓝牙耳机通话效果排名
  4. 【问题记录】| xfce桌面的窗口的标题栏与边框缺失
  5. 【语音去噪】谱减法+维纳滤波语音去噪(带面板+信噪比)【含GUI Matlab源码 1661期】
  6. 【Linux】内存分配小结--malloc、brk、mmap
  7. 树莓派学习笔记(十三)基于框架编写驱动代码
  8. PHP学习笔记——文件上传
  9. 大华(华创视讯)秋招嵌入式提前批
  10. python 删除pdf页面_python 有什么库可以删除pdf 里面内容