在完成目标前,我们最好审视自己到底有什么,有多远。
零、介绍
我打算详细了解一下常用的几种数据类型的各个接口,主要的来源是python shell中的 help(…)命令。python中基本的数据类型有四个 list, tuple, dict, set, 宽泛的讲,肯定每一个类都可以看作一种数据类型。
这篇文章,我们只关注上面的四种。对于一个函数来说,调用方要记住的是三个方面
①函数名称;
②参数类型,包括有几个,以及是什么参数(位置、默认、可变、命名关键字、关键字参数)
③返回值及其类型。
显然我们会发现一个共同点,任何变量在计算机中的讨论都离不开其数据类型,它指明了我们向计算机预说明这个变量的一些基本性质(主要是计算机如何存储它)
一、list(11个函数)
1.append
2.clear
3.copy
4.count
5.extend
6.index
7.insert
8.pop
9.remove
10.reverse
11.sort
二、tuple(2个函数)
1.count
2.index
三、dict(10个函数)
1.clear()
2.copy
3.get
4.items
items(...)
| D.items() -> a set-like object providing a view on D's items
上面的…代表的是没有参数
返回值的类型是 dict_items()
eg:显然这里又犯了个错误,就是调用函数忘记写()。
>>> d ={'a':3,'b':4}
>>> d.items
<built-in method items of dict object at 0x0000024011139940>
>>> d.items()
dict_items([('a', 3), ('b', 4)])
>>> type( d.items())
<class 'dict_items'>
5.keys
6.pop
7.popitem
8.setdefault
9.update
10.values
四、set(2个函数)
1.count
2.index
五、总结
5.1 想要准确描述一个函数,官方文档的写法已经是最好的写法了。😅,我还以为我有什么好办法,果然他喵的还是善假于物比较好。
六、额外的说明
python中 列表(list)的copy办法
1.先解决一个报错。
a =[1,2,3]
b =a.copy
print( b)
报错:
AttributeError: 'builtin_function_or_method' object has no attribute 'copy'
这是因为a.copy语句并没有执行copy函数,而是把a.copy这个函数赋值给了b。执行如下语句:
c =b()
print( c)
#c =[1,2,3]
这个错误太经典了,核心就是要记住,所有的函数的执行都需要()指示。
2.根据help( list)的指示,copy函数,将生成一个浅复制。具体的表现如下:
初始化:
original_list =[1, 2, [3, 4]]
shallow_list =original.copy()
>>>shallow_list
>>>[1, 2, [3, 4]]#看起来一模一样
分别进行两次,赋值,检查另一个对象:
>>>shallow_list[0] =100
>>>original_list
>>>[1, 2, [3, 4]] #没有变化
我们更改浅拷贝的第二层元素的时候:
>>> shallow_list[2][3] =300
>>>orignial_list
>>>[1, 2, [300, 4]]#我们没有操作过original_list,但是它改变了
网上通常的讲法说是因为copy传递的是地址,而不是内容。但是我感觉没这么简单。如果传递的是内容,那么修改第一次的时候,original_list就应该改变了。但是并没有,机制还是有待发掘的,留坑。(优点应该是占内存少)
3。深复制,没有理解困难。就是完全复制到另一块内存上的空间。两者之间不会有任何影响。
4.其他list 的基本函数( help( list)),留坑