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

[经验分享] python 列表特点及常用操作

[复制链接]

尚未签到

发表于 2018-8-9 08:37:03 | 显示全部楼层 |阅读模式
  一、列表的特性
  1、有序的集合
  2、通过偏移来索引,从而读取数据
  3、支持嵌套
  4、可变的类型
  列表支持的方法
>>> dir(list)  
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> a= [1,2,3]  
>>> a[-1]
  
3
  
>>> b=[[1,2,3],[3,4,5]] #列表可以嵌套
  
>>> b[1]
  
[3, 4, 5]
  
>>> b[1][1]
  
4
  
>>> b[1]=10 #原地修改列表
  
>>> b
  
[[1, 2, 3], 10]
  
>>> id(b)
  
46944392836376
  
>>> b[0]=5
  
>>> b
  
[5, 10]
  
>>> id(b)
  
46944392836376
  二、列表的常用操作
  1、切片:正向索引、反向索引、默认索引
a = [1,2,3,4,5,6,7]  
>>> a = [1,2,3,4,5,6,7]
  
>>> a
  
[1, 2, 3, 4, 5, 6, 7]
  
>>> a[0:4:1]
  
[1, 2, 3, 4]
  
>>> a[-1:-4:-1]
  
[7, 6, 5]
  
>>> a[1:]
  
[2, 3, 4, 5, 6, 7]
  
>>> a[1::2]
  
[2, 4, 6]
  2、添加操作:
  +: 生成一个新的列表
  Extend  接受参数并将该参数的每个元素都添加到原有的列表中,原地修改列表而不是新建列表
  Append :添加任意对象到列表的末端
  Insert: 插入任意对象到列表中,可以控制插入位置。
>>> a = [1,2,3]  
>>> b=[4,5,6]
  
>>> c=a+b
  
>>> print c #产生一个新的列表
  
[1, 2, 3, 4, 5, 6]
>>> id(a)  
46944392835016
  
>>> a.extend(b)  #原地修改列表
  
>>> print a
  
[1, 2, 3, 4, 5, 6]
  
>>> id(a)
  
46944392835016
>>> a=[1,2,3]  
>>> a.append(4) #添加任意对象到列表的末段
  
>>> print a
  
[1, 2, 3, 4]
  
>>> a.insert(1,'ab')
  
>>> print a
  
[1, 'ab', 2, 3, 4]
  3、修改,修改列表本身只需要直接赋值操作就行。
>>> A = [1,2,3]  
>>> A[0]='python'
  
>>> print A
  
['python', 2, 3]
  4、删除操作:
  Del :我们通过索引删除指定位置的元素。
  Remove:移除列表中指定值的第一个匹配值。如果没找到的话,会抛异常。
  Pop:返回最后一个元素,并从list中删除它。
>>> a  
['python', 'ab', 2, 3, 4]
  
>>>
  
>>> del a[0]
  
>>> a
  
['ab', 2, 3, 4]
  
>>> a.remove(2)  #删除的是给定的value
  
>>> a
  
['ab', 3, 4]
  
>>> a.remove(2) #如果没找到的话,会抛异常。
  
Traceback (most recent call last):
  
  File "<stdin>", line 1, in ?
  
ValueError: list.remove(x): x not in list
  
>>> a
  
['ab', 3, 4]
  
>>> a.pop() #默认是删除最后一个元素,也可以跟一个具体的index
  
4
  
>>> a
  
['ab', 3]
  5、成员关系:
  in 、not in我们可以判断一个元素是否在列表里。
  返回一个bool类型,元素在列表里返回true,否则返回fasle.
>>> a = [1,2,3]  
>>> 2 in a
  
True
  
>>> 5 not in a
  
True
  6、列表推导式:
  [expr for iter_var in iterable]
  6.1 、首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
  比如我们要生成一个包含1到10的列表
>>> [x for x in range(1,11)]  
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  
>>> range(1,11)
  
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  [expr for iter_var in iterable if cond_expr]
  6.2、加入了判断语句,只有满足条件的内容才把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
  要生成包含1到10的所有奇数列表。
>>> range(1,11,2)  
[1, 3, 5, 7, 9]
  
>>> [x for x in range(1,11) if x % 2 == 1]
  
[1, 3, 5, 7, 9]
  6.3 取出1-100的所有值的平方。
[x*x for x in range(100)]  6.4 生成字符串
['the %s' % d  for d in xrange(10)]  6.5 生成元组
>>> [(x,y) for x in range(2) for y in range(2)]  
[(0, 0), (0, 1), (1, 0), (1, 1)]
  6.6 生成字典
>>> dict([(x,y) for x in range(3) for y in range(2)]) #后面的键会覆盖前面的键  
{0: 1, 1: 1, 2: 1}
  7、排序翻转:sort,reverse
>>> a= [33,11,22,44]  
>>> b=a.sort() #直接修改原列表,返回的是一个None
  
>>> print b
  
None
  
>>> print a
  
[11, 22, 33, 44]
  list的reverse函数:反转一个list, 直接修改原列表,它的返回值为none
  比如上面的列表a
b = a. reverse()  
print b  #输出的内容是None
  
>>> b=a.reverse()
  
>>> a  #直接看a列表变量能看到翻转的效果。
  
[44, 33, 22, 11]
  8、内置list方法,返回一个列表,参数是可迭代对象。里面输出的内容还是保持了传入的可迭代对象的元素和顺序。如果参数为空,则返回一个空的列表
a = "asd"  
list(a)
  
>>> a="asd"
  
>>> list(a)
  
['a', 's', 'd']
  
>>> list((1,3))
  
[1, 3]
  9、xrange和range的具体区别。
  9.1 xrange的用法:
  xrange(开始,结束,步长)
  xrange 它生成一个xrange对象。
  比如:
>>> a = xrange(1,10)  
>>> print type(a)
  
<type 'xrange'>
  
>>> print a[0]
  
1
  
>>> x = xrange(1,10)  #返回的是一个生成器
  
>>> x
  
xrange(1, 10)
  
>>> b =range(1,10) #返回的是一个列表
  
>>> type(b)
  
<type 'list'>
  
>>> b
  
[1, 2, 3, 4, 5, 6, 7, 8, 9]
  
>>> x[0]
  
1
  
>>> b[0]
  
1
  range: 直接生成一个列表对象。
  xrange: 它是生成一个xrange对象.
  xrange的用法:
  1、当我们需要操作一个非常大的数据,而且内存比较吃紧的时候,我们可以用xrange来操作省内存。xrange的数据是取的时候才生成,而range是一次性生成好
  2、xrange一般用在循环里面,比如我们只需要操作部分数据的话,而不是返回全部元素来完成操作,推荐用xrange,效率更高。
  比如:
  
for m in range(1000):  #[0-999]
  
    if m == 10:
  
        print 'sss'
  
        break
  
for m in xrange(1000):  #[0-10]
  
    if m == 10:
  
        print 'sss'
  
        break
  10、列表的引用
>>> a = ['i','am','lilei']  
>>> b=a
  
>>> id(a)
  
46944392840544
  
>>> id(b)
  
46944392840544
  
>>> a[2]="hello"
  
>>> print b[2]
  
hello
  
>>> print b
  
['i', 'am', 'hello']
  
>>> del b
  
>>> a #删除了b的引用,a的引用还是在
  
['i', 'am', 'hello']
  小技巧之再议删除
  1、a = []
  2、del a 删除列表对象的引用
  3、del a[:] 清空列表对象里的元素,等价于a =[]
>>> a = ['i','am','lilei']  
>>> b=a
  
>>> a=[]
  
>>> b
  
['i', 'am', 'lilei']
  
>>> del a[:]
  
>>> a
  
[]
  
>>> b
  
['i', 'am', 'lilei']
  
>>> a=b
  
>>> del a
  
>>> b
  
['i', 'am', 'lilei']
  练习:
  1、下面列表:
  a = [1,2,3,4,5,333,11,44]
  输出下面的结果:
  [4,5,333]
  >>> a[3:6]  # 第一个参数是闭区间、第二个参数是开区间
  [4, 5, 333]
  >>> a[-5:-2]
  [4, 5, 333]
  2、有下面2个列表
  a = [1,2,3]
  b = [4,5,6]
  用2个方法输出下面结果:
  [1,2,3,4,5,6]
>>> a+b  
[1, 2, 3, 4, 5, 6]
  
>>> a.extend(b) #将b的内容打散插入到a中
  
>>> a
  
[1, 2, 3, 4, 5, 6]
  >>> a = [1,2,3]
  >>> a.append(b) #将b作为一个整体插入
  >>> a
  [1, 2, 3, [4, 5, 6]]
  >>> a.insert(3,b) #将b作为一个整体插入
  [1, 2, 3, [4, 5, 6]]
  三 有下面2个列表:
  a = [1,99,33,44,55,22]
  b= [11,33,54]
  输出结果:
  1:[1,2,99,33,44,55,22,(11,33,54)]
  2: [1,2,99,33,101,44,55,22]
  四:用列表推导式生成100内的大于20的偶数
  
>>>[x for x in range(20,101) if x%2==0]
  
>>> range(20,101,2)
  五: 已知:元组 a = (1,2,3) 利用list方法,输出下面的结果:
  (1,2,4)
>>> a = (1,2,3)  
>>> a=list(a)
  
>>> a[2]=4
  
>>> a=tuple(a)
  
>>> a
  
(1, 2, 4)
  六: 利用列表推导完成下面习题:
  1 输出结果:[1 love python,2 love python,3 love python,.... 10 love python]
>>> ["%s love python"  %  x  for x in range(1,11)]  2 输出结果:[(0,0),(0,2),(2,0),(2,2)]
>>> [(x,y) for x in range(0,3,2) for y in range(0,3,2)]  
[(0, 0), (0, 2), (2, 0), (2, 2)]
  七:
  a = [1,2,3]
  b = a[:]
  del a
  b的值是什么,为什么呢?
>>> a = [1,2,3]  
>>> b=a[:]
  
>>> del a
  
>>> b
  
[1, 2, 3]
  因为b和a指向的是不同的对象地址

运维网声明 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-548910-1-1.html 上篇帖子: Python pycurl模块 学习 下篇帖子: Linux下Python连接MySQL异常
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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