今天开始学python(内置数据类型)

这算是我自己的学习笔记吧, 菜鸟一只. 欢迎讨论~


python 内置数据类型有 dictionary(字典), list(列表) tuple(组元)

(1) Dictionary

定义了键与值的一对一关系

d = {"key1":"value1","key2":"value2"} #字典类型定义

d["key3"] = "value3"  #添加新的键值对

del d["key3"]   #删除元素
d.clear()       #清空dictionary

d["key2"] = "changedValue" #将原有键对应的值修改

d["key1"]  #可通过键获取对应值

note 1.1.  dictionary只能由键查值,  若所查键值不存在. 则会引发异常, 报出KeyError错误

note 1.2. dictionary是无序的

note 1.3. dictionary的key是大小写敏感的, d["key"] 和 d["Key"]是两个元素

note 1.4. dictionary的值可以是任意数据类型,包括字符串,数值,对象甚至其他dictionary, 

                 同时单个dictionary中值的类型也不是必须要相同, 可以根据需要混用

note 1.5. dictionary的键类型要求严格的多, 但可以是字符串,数值或其他几种类型(还没看到).

                 同note 4, 单个dictionary中键的类型也不是必须要相同.


(2) List

类似java里的ArrayList, 可以保存任意对象, 并且增加元素时动态扩展

li = ["object1","object2","object3"] #list类型定义


note 2.1 与dictionary不同, list 是有序的, 它会保持初始的顺序


li.append("new") #在末尾添加新元素, append的参数可以是任意类型
li.insert(2,"new") #在第2个元素后插入新元素
li.extend(["object3","object4"]) #连接list, extend的参数是一个list

note 2.2. append(添加)和extend(扩展)的区别

使用一个很明显的例子:

>>>li = ["a","b","c"]
>>>li.append(["d","e","f"])
>>>li
["a","b","c",["d","e","f"]]

>>>li = ["a","b","c"]
>>>li.extend(["d","e","f"])
>>>li
["a","b","c","d","e","f"]

append是在list的末尾添加一个元素, 哪怕这个元素本身也是个list, 也只会被当成一个元素

extend是将一个list每个元素一次添加到原list中


li.remove("object1") #删除首次出现的object1元素, 注意, 
                     #若list中没有object1元素, 则会引发异常

li.pop()             #删除最后一个元素,并返回最后一个元素的值


li[0]    #list视为从0开始的数组
li[-1]  #负数认为是从尾部往前计数来存取元素, li[-i] == li[length(li)-i]



#分片(slice)
li[2:3]  #分片(slice) 通过两个引索得到li的一个子集
li[-3:2] #引索为负数是可行的, 具体内容看note 2.3.
li[:2]   #第一个引索默认为0
li[2:]   #第二个引索默认为length(li)
li[:]    #这是原list的一个拷贝


note 2.3. 分片返回一个新list, 它包含了从第一个引索开始,直到但是不包括第二个引索的所有元素

                 简单的理解是, 从左往右阅读list, 第一个引索指定了第一个想要的元素

                 第二个引索指定了第一个不想要的元素,

                 返回值期间所有元素


                 ps. li[3:2] 返回[]



li.index("object1") #查找一个值首次出现的引索值
                    #如果是不存在的值, 则会报错
"object1" in li #判断对象是否在list中, 值存在,返回True,否则False

note 2.4. note. python语言中的bool类型True, False 要注意首字母大写

note 2.5. 0为False, 其他数值均为True

                 空串("")为False,其他字符串均为True

                 空list([])为Flase,其他list均为True

                 空tuple(())为False,其他tuple均为True

                 空dictionary({})为False,其他dictionary均为True



list运算符

li = li + ["b","c"] #作用等同li.extend(["b","c"]) 但extend效率较高
li += ["b","c"]
li = li*3     # *可作为重复器作用于list, 本句代码等同于 li = li+li+li


(3)Tuple

tuple是不可变的list, 一旦创建了一个tuple, 就不能以任何方式改变它

 

t = ("object1","object2","object3") #定义tuple
t[0]          #元素获取方式与list相同
t[-1]
t[2:3]      #也可使用分片(slice)
"object" in t #使用in判断元素是否在tuple中

note 3.1 tuple同list一样,是有顺序的. tuple的引索也是从0开始

note 3.2 tuple没有方法, 但是可以用in判断一个元素是否存在于tuple中

note 3.3 tuple可以作为dictionary的键

note 3.4 tuple操作速度比list快, 如果一个常量集唯一要做的就是不断地遍历它, 就是使用tuple吧

note 3.5 tuple可以转换成list, 反之亦然. 


tel = "tel"
number = "110"
"%s = %s"  %(tel,number)  #用tuple格式化字符串

v = "age"
age = 18
"%s = %d" %(v,age)  #用法类似c语言中的printf

"User Name is %s" %("ABC",) #只包含一个元素的tuple必须在结尾加上一个逗号, 
                            #否则Python不会知道("ABC")究竟是"ABC"还是一个tuple

note 3.6. 当定义一个dictionary,list或tuple时, 最后一个元素后跟上逗号是没有问题的





发布了19 篇原创文章 · 获赞 11 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章