设为首页 收藏本站
查看: 1197|回复: 0

[经验分享] Python3.5修炼手册7-duyuheng

[复制链接]

尚未签到

发表于 2018-8-13 13:27:05 | 显示全部楼层 |阅读模式
  列表
  
  列表不同于元组和字符串的地方:列表的内容是可变(mutable)的。
  更新列表的方法有:元素赋值、元素删除、分片赋值,和列表方法
  元素赋值
  通过编号标记某个特定位置的元素,并对该位置的元素重新赋值
  例如:
>>> a=[1,2,3,4,5,6]  
>>> a[1]=10
  
>>> print(a)
  [1, 10, 3, 4, 5, 6]
>>> a[5]=88  
>>> print(a)
  [1, 10, 3, 4, 5, 6,88]
  从上例可以看出是根据编号对列表中的某个元素进行赋值
  下面对上例进行不同类型的赋值
>>> #对编号4的元素赋一个字符串的值  
>>> a[4]='duyuheng'
  
>>> print(a)
  [1, 10, 3, 4, 'duyuheng', 88]
>>>  #查看赋值函数类型  
... type(a[5])
  
<class 'int'>
  
>>> type(a[4])
  <class 'str'>
  从赋值函数的类型可以看出,一个列表中的元素可以赋不同类型的值。
  千万要注意;不能对一个不存在元素的位置赋值
  可以和乘法中的初始化x个为空的序列结合起来使用
  例如:
>>> tring=[None]*5  
>>> tring[4]='duyuheng'
  
>>> print(tring)
  [None, None, None, None, 'duyuheng']
  增加元素赋值
  在Pyhon中是可以给列表增加元素的,使用append()方法就可以使实现
>>> list1=[1,2,3]  
>>> list1.append(4)
  
>>> print(list1)
  [1, 2, 3, 4]
  append()是一个用于在列表末尾添加新对象的方法。
  语法 list.append(obj)
  list代表列表,obj 代表需要添加到list列表末尾的对象
  注意:append()方法不是简单的返回一个修改过的新列表,而是直接修改了原来的列表。
  append()方法演示:
>>> a=[1,2,3]  
>>> #添加字符串
  
... a.append('si')
  
>>> print(a)
  [1, 2, 3, 'si']
>>> b=['a','b','c']  
>>> #添加数字
  
... b.append(666)
  
>>> print(b)
  ['a', 'b', 'c', 666]
  append()是可以往数字列表中添加字符串,也可以往字符串序列中添加数字。
  删除元素
  能在列表中增加元素,当然也可以在列表中删除元素。
  例如:
>>> list2=['a','b','c','d','e']  
>>> del list2[3]
  
>>> print('删除第4个元素后:',list2)
  删除第4个元素后: ['a', 'b', 'c', 'e']
>>> len(list2)  4
  del可以删除列表中的字符,也可以删除列表中的数字。
  例如:
>>> num=[10,20,30]  
>>> len(num)
  3
>>> del num[2]  
>>> print('删除第3个元素后:',num)
  
>>> len(num)
  2
  分片赋值
  分片赋值是列表的一个强大的特性。
  使用list()函数可以直接将字符串转换为列表。
  例如:
>>> list('我爱你美丽的姑娘')  
['我', '爱', '你', '美', '丽', '的', '姑', '娘']
  
>>> boil=list('我爱你美丽的姑娘')
  
>>> print(boil)
  ['我', '爱', '你', '美', '丽', '的', '姑', '娘']
  可以通过分片赋值直接对列表进行变更。
  例如:
>>> show=list('hi,boy')  
>>> print(show)
  ['h', 'i', ',', 'b', 'o', 'y']
>>> show[3:]=list('man')  
>>> print(show)
  ['h', 'i', ',', 'm', 'a', 'n']
  从例子中可以看出分片将编号3之后位置的元素做了变更,将boy替换成了man
  也可以使用与原序列不等长的序列将分片替换
>>> greeting=list('hi')  
>>> print(greeting)
  ['h', 'i']
>>> greeting[1:] =list('ello')  
>>> print(greeting)
  ['h', 'e', 'l', 'l', 'o']
  还可以在不替换任何元素的情况下在任意位置插入新的元素。
  例如:
>>> love=list('我爱你美丽的姑娘')  
>>> print(love)
  ['我', '爱', '你', '美', '丽', '的', '姑', '娘']
>>> love[1:1]=list('不')  
>>> print(love)
  ['我', '不', '爱', '你', '美', '丽', '的', '姑', '娘']
  通过分片赋值删除元素也是可以的
  例如:
>>> love=list('我爱你美丽的姑娘')  
>>> print(love)
  ['我', '爱', '你', '美', '丽', '的', '姑', '娘']
>>> love[3:6]=[]  
>>> print(love)
  ['我', '爱', '你', '姑', '娘']
  分片删除的功能和del删除的操作的结果是一样的
  嵌套列表
  在列表中可以嵌套列表,且套的列表取出后还是列表。
  例如:
>>> field=['a','b','c']  
>>> print(field)
  ['a', 'b', 'c']
>>> num=[1,2,3]  
>>> print(num)
  [1, 2, 3]
>>> mix=[field,num]  
>>> print(mix)
  [['a', 'b', 'c'], [1, 2, 3]]
>>> mix[0]  ['a', 'b', 'c']
>>> mix[1]  [1, 2, 3]
  列表方法
  方法是与对象有紧密联系的函数,对象可能是列表、数字,也可能是字符串或者其他类型的对象。
  调用语法:对象.方法(参数)
  count
  count()方法用统计某个元素在列表中出现的次数。
  count()方法的语法:
  list.count(obj)
  list代表列表,obj代表列表中统计的对象。
  count()方法演示:
  #(以后就使用PyCharm敲代码了,cmd里面敲的太累了!!!)
field=list('hello.world')  
print(field)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  ['h', 'e', 'l', 'l', 'o', '.', 'w', 'o', 'r', 'k', 'd']
print('列表field中,字母o的个数:',field.count('o'))  C:\python\python.exe C:/python.py/liebiaofangfa.py
  ['h', 'e', 'l', 'l', 'o', '.', 'w', 'o', 'r', 'k', 'd']
  列表field中,字母o的个数: 2
print('列表field中,字母l的个数:',field.count('l'))  C:\python\python.exe C:/python.py/liebiaofangfa.py
  列表field中,字母l的个数: 3
print('列表field中,字母a的个数:',field.count('a'))  C:\python\python.exe C:/python.py/liebiaofangfa.py
  列表field中,字母a的个数: 0
listobj=[123,'hello','world',123]  
listobj=[26,'hello','world',26]
  
print('数字26的个数:',listobj.count(26))
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  数字26的个数: 2
#统计字符串的个数  
print('hello个数:',listobj.count('hello'))
  hello个数: 1
  也可以这样使用
print(['a','b','c','a','e','f','a'].count('a'))  C:\python\python.exe C:/python.py/liebiaofangfa.py
  3
  还可以这样使用
mix=[[1,3],5,6,[1,3],2]  
print('嵌套列表中mix中列表[1,3]的个数为:',mix.count([1,3]))
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  嵌套列表中mix中列表[1,3]的个数为: 2
  extend
  extend()方法用于在列表的末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
  extend()语法如下;
  list.extend(seq)
  list代表列表,代表元素列表
  extend()方法演示:
a=['hello','world']  
b=['python','is','funny']
  
a.extend(b)
  
print(a)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  ['hello', 'world', 'python', 'is', 'funny']
  和序列相加做一个对比
a=['hello','world']  
b=['python','is','funny']
  
print(a+b)
  
print(a)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  ['hello', 'world', 'python', 'is', 'funny']
  ['hello', 'world']
  两个示例中a和b的赋值都是一样的,但是示例1输出a的值和示例2中输出a的值确不一样
  extend()和序列相加的主要区别在于:extend()方法修改了被扩展的序列,如前面的a;原始的连接操作会返回一个全新的列表,如上面的示例返回的是一个包涵a和b的副本的新列表,而不会修改原始的变量。
  也可以使用分片赋值实现相同的结果
a=['hello','world']  
b=['python','is','funny']
  
a[len(a):]=b
  
print(a)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  ['hello', 'world', 'python', 'is', 'funny']
  输出结果一样的但是没有extend()方法易懂
  index
  index()方法用于从列表中找出某个值第一个匹配项的索引位置。
  index()语法如下:
  list.index(obj)
  list代表列表,obj代表查找的对象。
  index()方法演示:
name=['duyuheng','duzhaoli','xuwei','gaoshuang','changting']  
print('duyuheng的索引位置为:',name.index('duyuheng'))
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  duyuheng的索引位置为: 0
print('xuwei的索引位置为:',name.index('xuwei'))  C:\python\python.exe C:/python.py/liebiaofangfa.py
  xuwei的索引位置为: 2
  搜索一个不存在的字符串
print('chaiergou的索引位置为:',name.index('caiergou'))  C:\python\python.exe C:/python.py/liebiaofangfa.py
  Traceback (most recent call last):
  File "C:/python.py/liebiaofangfa.py", line 7, in <module>
  print('chaiergou的索引位置为:',name.index('caiergou'))
  ValueError: 'caiergou' is not in list
  报错:不在列表中
  insert
  insert()方法用于从列表中找出某个值的第一个匹配项的索引位置。
  insert()语法如下:
  list.insert(index,obj)
  list代表列表,index代表对象obj需要插入的索引位置,obj代表要插入列表中的对象。
  insert()方法演示:
num=[1,2,3]  
print('插入之前的num:',num)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  插入之前的num: [1, 2, 3]
num.insert(2,'插入之前在2之后,3之前')  
print('插入之后的num:',num)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  插入之后的num: [1, 2, '插入之前在2之后,3之前', 3]
  insert()也可以使用分片赋值的方法实现
  例如:
num=[1,2,3]  
print('插入之前的num:',num)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  插入之前的num: [1, 2, 3]
num[2:2]=['插入之前在2之后3之前']  
print('插入之后的num:',num)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  插入之后的num: [1, 2, '插入之前在2之后3之前', 3]
  输出的结果和insert()的一样,但是没有insert容易理解。
  pop
  pop()方法用于移除列表中的一个元素(默认为最后一个元素),并且返回该元素的值。
  pop()的语法如下:
  list.pop(obj=list[-1])
  list代表列表,obj为可选择的参数,list[-1]代表要移除列表元素的对象。
  pop()方法演示:
field=['hello','world','python','is','funny']  
#不传参数,默认移除最后一个元素
  
field.pop()
  
print('移除元素后的field:',field)
  
#移除编号为3的元素is
  
field.pop(3)
  
print('移除元素后的field:',field)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  移除元素后的field: ['hello', 'world', 'python', 'is']
  移除元素后的field: ['hello', 'world', 'python']
  pop()方法是唯一一个即能修改列表又能返回元素值(除了None)的列表方法。
  使用pop的方法可以实现一种常见的数据结构——栈
  栈的原理,最后放入栈的最先被移除,称为LIFO(Last In First Out),即先进先出。
  栈中的放入和移除操作有统一的称谓——入栈(push)和出栈(pop)。
  python没有入栈方法,可以使用append方法代替。
  pop方法和append方法的操作结果恰好相反。
  如果入栈(或追加)刚刚出栈的值,最后的的结果就不会变
  例如:
num=[1,2,3]  
#追加默认出栈的值
  
num.append(num.pop())
  
print('num追加默认出栈值的操作结果',num)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  num追加默认出栈值的操作结果 [1, 2, 3]
  通过追加默认出栈的值得到的列表和原来的是一样的。
  remove
  remove()方法用于移除列表中的某个值的第一个匹配项。
  remove()语法如下:
  list.remove(obj)
  list代表列表,obj为列表中要移除的对象。
  remove()方法演示:
field=['我爱','美丽','姑娘']  
print('移除前的列表field:',field)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  移除前的列表field ['我爱', '美丽', '姑娘']
field.remove('美丽')  
print('移除后的列表field:',field)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  移除后的列表field: ['我爱', '姑娘']
#移除一个不存在的值  
field.remove('凤姐')
  
print('移除后的列表field:',field)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  Traceback (most recent call last):
  File "C:/python.py/liebiaofangfa.py", line 8, in <module>
  field.remove('凤姐')
  ValueError: list.remove(x): x not in list
  报错:不在列表中
  注意:remove是一个没有返回值的原位置元素的变更方法,它修改了列表确没有返回值,与pop方法正好相反。
  reverse
  reverse()方法用于反向列表中的元素
  reverse()的语法如下:
  list.reverse()
  list代表列表,该方法不需要传入参数。
  reverse()方法演示:
num=[1,2,3]  
print('列表反转之前的num:',num)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  列表反转之前的num: [1, 2, 3]
num.reverse()  
print('列表反转之后的num:',num)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  列表反转之后的num: [3, 2, 1]
  该方法改变了列表但不返回值(和前面remove一样)。
  如果需要对一个序列进行反向迭代,那么就可以用reverse函数。
  这个函数并不返回列表,而是返回一个迭代器(Iterator)对象,可以通过list函数把返回的对象转换为列表。
  例如:
num=[1,2,3]  
print('使用reversed函数翻转结果:',list(reversed(num)))
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  使用reversed函数翻转结果: [3, 2, 1]
  输出结果对原序列进行反向迭代了
  sort
  sort()对原序列表进行排序,如果指定参数,就会使用该参数指定的比较方法进行排序。
  sort()语法如下:
  list.sort(func)
  list代表列表,func为可选参数。如果指定该参数,就会使用该参数的方法进行排序。
  sort()方法演示:
num=[2,5,1,4,7]  
num.sort()
  
print('num调用sort方法后:',num)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  num调用sort方法后: [1, 2, 4, 5, 7]
  sort方法改变了原来的列表,而不是简单的返回一个已排序的列表副本。
  如果用户需要一个排好序的列表副本,同时又保留原有列表不变该怎么实现。
  实现的方式是先把num的副本赋值给n,然后对n进行排序如下
num=[2,5,1,4,7]  
#将列表切片后赋值给n
  
n=num[:]
  
n.sort()
  
print('变量n的结果是',n)
  
print('num的结果是',num)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  变量n的结果是 [1, 2, 4, 5, 7]
  num的结果是 [2, 5, 1, 4, 7]
  进行该操作的时候一定要对原序列进行分片,不要让两个列表指向同一个列表否则两个序列都会被排序。
  sort方法有一个同样功能的函数———sorted函数,该函数可以直接获取列表副本进行排序
  例如:
num=[2,5,1,4,7]  
n=sorted(num)
  
print('变量n的结果是',n)
  
print('num的结果是',num)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  变量n的结果是 [1, 2, 4, 5, 7]
  num的结果是 [2, 5, 1, 4, 7]
  sorted函数可以用于任何序列,返回的结果都是一个列表。
  例如:
print(sorted('python'))  
print(sorted('31745'))
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  ['h', 'n', 'o', 'p', 't', 'y']
  ['1', '3', '4', '5', '7']
  clear
  clear()方法用于清空列表,类似于 del [a:]。
  clear()语法如下:
  list.clear()
  list代表列表,不需要传入参数
  clear()方法演示:
name=['duyuheng','duzhaoli','gaoshuang','xuwei']  
name.clear()
  
print('name调用clear方法后的结果:',name)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  name调用clear方法后的结果: []
  copy
  copy()方法用于复制列表,类似a[:]。
  copy()语法如下:
  list.copy()
  list代表列表,不需要传入参数。
  copy()方法演示:
name1=['duyuheng','duzhaoli','gaoshuang','xuwei']  
name2=name1.copy()
  
print('name2复制的结果:',name2)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  name2复制的结果: ['duyuheng', 'duzhaoli', 'gaoshuang', 'xuwei']
  高级排序
  如果希望元素能按特定的方式进行排序(不是使用sort方法默认的按升序排列元素),就可以自定义比较方法。
  sort方法有两个可选参数,即key和reverse。要使用他们就要通过名字指定,我们称之为关键字参数。
  示例:
field = ['study','python','is','happy']  
#按字符串由短到长排序
  
field.sort(key=len)
  
print(field)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  ['is', 'study', 'happy', 'python']
  #按字符串由长到短排序,需要传递两个参数
field.sort(key=len,reverse=True)  
print(field)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  ['python', 'study', 'happy', 'is']
  可以做排序后逆序
  例如:
num=[8,6,1,4,5]  
num.sort(reverse=True)
  
print(num)
  C:\python\python.exe C:/python.py/liebiaofangfa.py
  [8, 6, 5, 4, 1]
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-551242-1-1.html 上篇帖子: Python import 自定义模块 下篇帖子: Python3.5修炼手册2-duyuheng
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表