关于Python列表你可能会忽略的8个知识点
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于Python列表你可能会忽略的8个知识点,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2353字,纯文字阅读大概需要4分钟。
内容图文
![关于Python列表你可能会忽略的8个知识点](/upload/InfoBanner/zyjiaocheng/856/13e513ec2ad74a0b8774b54365cfde9b.jpg)
1. 用切片来实现拷贝
切片是python中列表非常常见的操作,不仅仅可以用来“切割”列表,还可以优雅的对一个列表进行拷贝。
>>> a = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> a[:]
['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> a[:] is a
False
需要注意的是,这种拷贝只是浅拷贝。
>>> a = ['foo', 'bar', 'baz',[1,3,5]]
>>> a[:]
['foo', 'bar', 'baz', [1, 3, 5]]
>>> b = a[:]
>>> b.append('c')
>>> b
['foo', 'bar', 'baz', [1, 3, 5], 'c']
>>> b[3].append('d')
>>> b
['foo', 'bar', 'baz', [1, 3, 5, 'd'], 'c']
>>> a
['foo', 'bar', 'baz', [1, 3, 5, 'd']]
2. 用列表代替列表中的部分元素
>>> a = ['foo', 'bar', 'baz', 'chic', 'fox', 'cock']
>>> a[1:4]
['bar', 'baz', 'chic']
>>> a[1:4] = [1.1, 2.2, 3.3, 4.4, 5.5]
>>> a
['foo', 1.1, 2.2, 3.3, 4.4, 5.5, 'fox', 'cock']
3. 把一个列表插入到另一个列表,并替换掉插入位置的元素
>>> a = [1, 2, 3]
>>> a[1:2] = [0.1, 0.2, 0.3]
>>> a
[1, 0.1, 0.2, 0.3, 3]
注意被替换元素的序号与切片范围的关系
4. 从某个位置把一个列表插入到另一个列表,不替换任何元素
>>> a = [1, 2, 7, 8]
>>> a[2:2] = [3, 4, 5, 6]
>>> a
[1, 2, 3, 4, 5, 6, 7, 8]
5. 批量删除列表中的元素
还是利用切片来实现
>>> a = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> a[1:5] = []
>>> a
['foo', 'corge']
>>> a = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> del a[1:5]
>>> a
6. extend
和append
的区别
append(object)
是把参数object当作一个整体的对象加入到list的尾端
>>> a = ['a', 'b']
>>> x = a.append(123)
>>> print(x)
None
>>> a
['a', 'b', 123]
即使这个object是一个可迭代对象
>>> a = ['a', 'b']
>>> a.append([1, 2, 3])
>>> a
['a', 'b', [1, 2, 3]]
而extend
接受的参数是一个iterable
对象,然后把这个iterable
对象中的各个元素从尾端加入到列表中。
>>> a = ['a', 'b']
>>> a.extend([1, 2, 3])
>>> a
['a', 'b', 1, 2, 3]
7. List的多数方法返回值都是None
例如
a.append(<obj>)
a.extend(<iterable>)
a.insert(<index>, <obj>)
a.remove(<obj>)
除了pop
会返回弹出的那个值之前,上面的方法都是返回的None
.
8. 使用列表做方法的默认参数
列表属于mutable 的对象,用列表做方法的默认参数会出现与期望不符的结果
def add_end(L=[]):
L.append('END')
return L
#正常调用时:
>>> add_end([1, 2, 3])
[1, 2, 3, 'END']
>>> add_end(['x', 'y', 'z'])
['x', 'y', 'z', 'END']
#第一次通过默认参数调用时,也是正常的
>>> add_end()
['END']
#再次调用add_end()时,结果就不对了
>>> add_end()
['END', 'END']
>>> add_end()
['END', 'END', 'END']
这是因为默认参数L始终指向的同一个对象,而python的参数传递对于可变对象实际上是引用传递。
内容总结
以上是互联网集市为您收集整理的关于Python列表你可能会忽略的8个知识点全部内容,希望文章能够帮你解决关于Python列表你可能会忽略的8个知识点所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。