这算是我自己的学习笔记吧, 菜鸟一只. 欢迎讨论~
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时, 最后一个元素后跟上逗号是没有问题的