数据类型之---列表list
#和字符串不同,列表的值可以被修改、增添、删减,因为其每个字符的存储不需要是连续的,每个字符的存储都指向了下一个字符(在C语言中叫链表)。当出现修改时,将指向的位置改变就行,于是就无需重新开辟空间写入整个列表。
#对象.方法 --> 称为对象调用方法(正规叫法)
#定义方式
list = [12,213,['adfad','2131','adsf',[11,'sdf',33]],'adfkjl',1231]
#可列表里面嵌套多个类型,如列表、布尔值
#取值,修改
list[2] --> ['adfad','2131','adsf',[11,'sdf',33],True]
list[0:2] --> [12,213]
list[2][3][1][0] --> s
#[3]代表list[2]的列表里的第4个值,[2]以此类推
'2131' in a --> False
'2131' in a[2] --> True
#删除列表元素的几种方式
del list[2]
del list[0:2]
#列表与其他数据类型的转换
str1='adfaf'
list1 = list(str1) --> ['a','d','f','a','f'] # (字符串转列表内部用的是for来逐个字符迭代)
str(list1) --> '['a','d','f','a','f']'
#将含数字的列表中的元素合并
s = ''
for item in list1 :
s = s + str(item)
#如果只含字符串
''.join(list)
#注意数字不能转换为列表(因为数字不可以用for迭代),需要现将数字转换为字符串
----------------------------------------------列表的一些内置指令------------------------------------------------
a = [21 ,123 ,23 ,2]
#追加单个内容到列表中(可追加任何类型)
a.append([11,'dsf']) --> a=[21 ,123 ,23 ,2,[11,'dsf']] # v = a.append(*) 的值为None (空)
#追加多个内容到列表中
a.extend([11,'dsf']) --> a=[21 ,123 ,23 ,2,11,'dsf']
a.extend('ad') --> a=[21 ,123 ,23 ,2,'a','d']
#实际等于
for item in [11,'dsf'] :
a.append(item)
#要追加内容到指定位置
a.insert(2,'ads') --> a=[21,123,'ads',23,2] 插到位置2
#清空列表
a.clear()
#复制
a.copy()
#计算元素出现的次数
a.count(123) --> 1
# 获取当前值索引位置(从左到右第一个)
a.index(123) --> 1
#删除列表指定索引位置的某个值,并且获取它。不加参数默认为删除最后一位
v = a.pop(2) --> a = [21 ,123 ,2] v = 23
#删除列表中的指定值
a.remove(21) --> a = [123 ,23 ,2]
#将当前列表反转
a.reverse() --> a = [2 ,23 ,123 ,21]
#列表的排序(默认从小到大排)
a.sort() -->[2 ,21,23,123]
a.sort(reverse=True) # 从大到小
------------------------------------------------------------------------------------------
数据类型之---元组tuple
#元组(tuple)也是python中内置的一个容器类,元组中的数据一旦确定下来就不可更改,不能进行添加、删除、修改的操作(元组的一级元素不可修改,二级及一下可以,元组一级元素中的列表项),可以认为元组就是一个不可变的列表(list)
#定义方式(与列表的区别在于list=[ ] tuple=() )
a = (11,'sdf',[11,22],('df',231),) #为了与调用函数的写法 对象.功能()区分开,定义元组时最后一位多加一个逗号,
#跟列表一样,元组也能被索引、切片
b = a[4] ; b=a[0:2]
# 元组也是可迭代对象,可与字符串、列表互相转换
c = [11,22,33]
tuple(c) --> 将列表c转换为元组
------------------------------------元组的两个指令----------------------------------
a.count()
a.index()
#用法与列表一致
------------------------------------------------------------------------------------------
数据类型之---字典dict
#元组定义,其中的元素称为键值对
info = {'k1' : 'v1' , 2 : 'v2' , (11,22,33): [1,2,3] }
#字典里的每个元素的前一项称为key 后一项称为 value
#注意列表、字典不能用作key。而value可是是任何类型的值,且不要有重复的key值
#字典是无序的,每次输出里面元素位置都不同,所以不能切片、索引
#如何获取字典中的value
info['k1'] -->'v1'
info[(11,22,33)] [2] --> 3
#删除
del info['k1']
#for循环
for item in info :
print(item)
#以上默认输出key,或者
for item in info.keys() :
print(item,info[item])
#输出values
for item in info.values() :
print(item)
#或者 info.items() --> 直接获得键值对
for a,b in info.items() :
print(a,b)
#-----------------------------------------------------------------------------------------------------
info = {'k1' : 'v1' , 2 : 'v2' , (11,22,33): [1,2,3] }
info.clear()
info.copy()
#根据序列创建字典
v = dict.fromkeys([1,2,3,],'值') --> v = {1:'值',2:'值',3:'值'}
#获取字典中的value,区别于直接 info[key] -->(要是key不存在于字典中的话直接报错,而info.get()默认会输出None,也可自己定义key不存在于字典中输出何值)
info.get('adsfdsa','不存在') --> 不存在
info.pop('k1') --> 'v1'
info.pop('adfdasfd','不存在') --> '不存在'
#随机(默认删除最后一对)删除键值对并且获取值
v = info.popitem() --> v = 删除的键值对(item)
v,y = info.popitem() --> v = 删除的key y = 删除的value
#若输入的key存在则不修改,不存在则修改成新值,并输出新值.原始字典(info)不变
v = info.setdefault('k1','1234') --> info = {'k1' : 'v1' , 2 : 'v2' , (11,22,33): [1,2,3] } v = v1
v = info.setdefault('新值',1234) --> info = {'k1' : 'v1' , 2 : 'v2' , (11,22,33): [1,2,3] , '新值' : 1234} v = 1234
#修改旧值,添加新值
info.update({'v1' : 123 , 'ttt' : 321}) --> info = {'k1' : 123 , 2 : 'v2' , (11,22,33): [1,2,3] , 'ttt' : 321}
#另一种写法
info.update(v1 = 123 , ttt = 321) --> info = {'k1' : 123 , 2 : 'v2' , (11,22,33): [1,2,3] , 'ttt' : 321}
----------------------------------------------------------------------------------------------------------
布尔值(bool)
None {} [] () 0 '' False 都为 False 其余为True
TIPS:
#索引时 0: 可以获取到最后一位
#enumerate()使用
#enumerate在字典上是枚举、列举的意思
#对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
#enumerate多用于在for循环中得到计数
#例如对于一个seq,得到:
(0, seq[0]), (1, seq[1]), (2, seq[2])
#enumerate()返回的是一个enumerate对象,例如:
#如果对一个列表,既要遍历索引又要遍历元素时,首先可以这样写:
list1 = ["a", "b", "c", "d"]
for i in range (len(list1)):
print i ,list1[i]
#上述方法有些累赘,利用enumerate()会更加直接和优美:
list1 = ["a", "b", "c", "d"]
for index, item in enumerate(list1):
print index, item
#enumerate还可以接收第二个参数,用于指定索引起始值,如:
list1 = ["a", "b", "c", "d"]
for index, item in enumerate(list1, 1):
print index, item
>>>
1 a
2 b
3 c
4 d