Python学习日志——list、set、tuple、dict

一、list

list形式为用中括号包裹list元素,其中各元素以逗号区分

L=[0,1,2,3,4,5]

对list区元素采用指定下标索引的办法,索引第一位应当为下标0,其下标用中括号包裹

L[0]=0

L[1]=1

 

除了自左往右顺序的下标表示以外,还可以自右往左,起右边第一位下标为-1,之后为-2,-3,-4等等

L[-1]=5

L[-2]=4

 

注意下标不能超越list元素容量,否则会报错 IndexError: list index out of range

 

添加元素用append(),可以在list尾部添加元素

 

1 L=['Adam','Tom']
2 L.append('Usher')
3 print(L)

 

输出:

['Adam', 'Tom', 'Usher']

 

插入元素用insert(),其用法为insert(index, object),index为元素要插入的下标索引位置

 

1 L=['Adam','Tom']
2 L.insert(1,'Usher')
3 print(L)

 

输出:

['Adam', 'Usher', 'Tom']

 

删除元素用remove(),用于删除指定值的元素

 

1 L=['Adam','Tom']
2 L.remove('Adam')
3 print(L)

 

输出:

['Tom']

del当不知道元素值但是知道要删除指定索引位置的元素时,del用法与上述方法不一样,如下:

1 L=['Adam','Tom']
2 del L[1]
3 print(L)

输出:

['Adam']

 

二、set

set是一个无序且不重复的数组,形式为用set小括号包裹一个list

S=set(['Adam',‘Lisa’,'Usher'])

也可以这样写

L=['Adam',‘Lisa’,'Usher']

S=set(L)

因为是无序所以不能用下标类似S[index]的方式取出对应元素

 

使用add可以往set添加元素

S.add('Tom')

S中元素为:{'Usher', 'Tom', 'Adam', 'Lisa'}

 

因为S不重复,所以当

S.add('Adam')

S中元素为:{'Usher', 'Adam', 'Lisa'}

 

移除元素使用remove()

S.remove('Adam')

S中元素为:{'Usher','Lisa'}

 

update(list)则可以对set批量添加元素

S.update(['Adam','Tom'])

S中元素为:{'Usher', 'Lisa', 'Adam', 'Tom'}

三、tuple

tuple 与上诉set、list不同,当其初始化之后,就不能再更改,这样一定程度上保证了数据安全性

写法如下

T=('Adam','Tom')

tuple与list一样是有序的,所以同样可以使用下标索引获得指定位置元素,索引用法同list

>>>print(T[0])

输出:

Adam

注意:

虽然tuple的元素不可更改,但是其中元素指向的元素可以更改

如下:

1 T=('a','b',['c','d'])
2 T[-1][1]='e'
3 print(T)

 

输出:

('a', 'b', ['c', 'e'])

既T[2]本身元素并没有改变,但是T[2]中的list元素中的索引为[1]元素指向从'd'变为'e'。

set因为不可变特性,可以用来定义一些常量,比如星期标识、月份标识等等。

注意:

因为()可以用来表示运算优先,当set中只有一个元素时写法略有不同

 1 L=('Adam')

2 print(L) 

输出:

Adam

是不是和set有区别,因为这个是有L为‘Adam’,而不是set

当set中只有一个元素时应当采用 (object,) 写法,逗号表示这是一个set而不是采用优先运算的object

 1 L=('Adam',)

2 print(L) 

输出:

('Adam',)

四、dict

dict采用一种key-value的存储方式。

dict形势如下:

D={

  key:value

  ...

  }

其元素获取方式为dict[key]

1 D={'michael':65,
2 'Tom':70,
3 'Adam':90,
4 }
5 print(D['Adam'])

 

输出:

90

当需要对元素集进行指定一个元素获得时,使用dict是最快的。就像字典一样,dict相当于key就是目录,value即是对应目录的内容,当需要查找时,通过key获得指定value位置便能很快获得对应元素值,而若是使用list,就相当于,对这个字典不通过目录的查找,所以dict在数据量很大的情况下,是很快捷的。但是因为dict为了实现查找速度快,是牺牲了存储空间所致。

如果D[key]中的key并不在D中,就会报KeyError错误

在使用dict时,要记得进行判断

一般采用两种判断方法

通过in判断:

key in dict

若key不存在此dict中,则返回False,反之则返回True

dict本身也提供get方法用于获取元素时判断是否存在此元素

dict.get(key,args)

当key存在时,则返回相应value,反之则返回args,

当args这个参数不存在时:

dict.get(key)

若key不存在则返回None

dict可以通过pop(key)删除元素,准确说弹出元素,pop会返回对应key的value值,当值不存在也会报错KeyError

1 D={'michael':65,
2 'Tom':70,
3 'Adam':90,
4 }
5 print(D.pop('Tom'))
6 print(D)

输出:

70
{'michael': 65, 'Adam': 90}

当想要添加元素或者替换元素时直接使用dict[key]即可

1 D={'michael':65,
2 'Tom':70,
3 'Adam':90,
4 }
5 D['Tom']=85
6 D['Usher']=80
7 print(D)

因为key不重复的特性,替换时相当于直接获得对应元素然后复制,若key不存在时dict[key]会直接生成添加对应key-value

 

切片

切片我个人的理解是对于有序元素集的索引运用

在此以list举例,tuple相关用法同list一样

用法为索引下标[indexStar:indexEnd:space]

其中indexStart为要取的值的起始下标的第一个位置,indexEnd为要取的值的至多下标位+1,space为每space个位置中取一个值

 1 L=[0,1,2,3,4,5,6,7,8,9]

print(L[1:9:2])

输出:

 

[1, 3, 5, 7]

从下标[1]开始,即元素1,每2个元素取一次值,至多直至下标[9-1]

其中space可以省略,这样就默认space为1

 1 L=[0,1,2,3,4,5,6,7,8,9]

 print(L[1:9]) 

输出:

[1, 2, 3, 4, 5, 6, 7, 8]

indexStart和indexEnd也可以省略,当省略indexStart时默认从头元素开始,省略indexEnd时,默认至尾元素

 1 L=[0,1,2,3,4,5,6,7,8,9] 2

print(L[:]) 

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

posted on 2018-03-11 21:02  SaltFishYe  阅读(153)  评论(0)    收藏  举报

导航