Python容器:列表、元组、字典与集合

1.1  List 与Tuples区别

List可以改变其內容,增減长度 or 替换等等皆可以,Tuples一旦赋值之后,就不能再修改。以性能和内存使用量来说,Tuples皆较佳。

1.2 List类型介绍

List可以使用 [] 或是 list() 來创建空的,或是直接加入值进去,使用逗号区分即可。內容可以重复出现,且具有順序性。可以使用 list() 来作为转换其他类型到List,或是前面提到的字串split()函数。提取內容時跟字符串一样使用[ ]。

List里面可以包含不同类型的Object,当然也包括List

可以使用List的內建函数append()来向后面添加元素

print(list('cat'))  #  ['c', 'a', 't']
a_tuple = ('ready', 'fire', 'aim')
print(list(a_tuple))  #  ['ready', 'fire', 'aim']
birthday = '1/6/1952'
print((birthday.split('/')))  # ['1', '6', '1952']
list.extend()+=合并list
list.insert()在指定位置插入元素,如果位置超过最大长度則放在最后面,故不会飞到很远去或出错。
del Object用来刪除某个位置的元素,剩余元素会自动往前填补
list.remove()用来移除指定元素
list.pop()类似剪出的效果,可以將指定位置的元素剪出來,默认index为 -1
list.index()找查指定元素第一次出现的index
in Object判断指定元素是否存在
list.count()

计算指定元素出現次数

XD = ['a', 'b']
XD2 = ['e', 'f']
print(XD, XD2)  #  ['a', 'b'] ['e', 'f']
XD.append('QQ~')
print(XD)  # ['a','b','QQ~']
XD.extend(XD2)
print(XD) #['a','b','QQ~','e','f']
XD += XD2
print(XD) #  ['a','b','QQ~','e','f','e','f'] 
XD.append(XD2)
print(XD) #  ['a','b','QQ~','e','f','e','f',['e','f']]
XD.insert(2, 'c')
print(XD) #  ['a', 'b', 'c', 'QQ~', 'e', 'f', 'e', 'f', ['e', 'f']]
XD.insert(500, 'ker')
print(XD)  #  ['a', 'b', 'c', 'QQ~', 'e', 'f', 'e', 'f', ['e', 'f'],'ker']
del XD[8]
print(XD)  #  ['a', 'b', 'c', 'QQ~', 'e', 'f', 'e', 'f', 'ker']
XD.remove('e')
print(XD)  #  ['a', 'b', 'c', 'QQ~', 'f', 'e', 'f', 'ker']
QQ = XD.pop(3)
print(XD, QQ)  #  ['a', 'b', 'c', 'f', 'e', 'f', 'ker'] QQ~
print(XD.index('f')) #  3
print('ker' in XD)  #  True
print(XD.count('f')) #  2

想要针对List、Tuples或是字串使用字串做组装,就只要一种方法就好, 不用针对每种类型都去设计一个相同的方法來做使用,如下所示。 string.join() 与 string.split()两个互相对应的用法!!

print(', '.join(['a', 'b', 'c']))  #a,b,c

print(', '.join('abc'))#a,b,c

print(', '.join(('a', 'b', 'c')))#a,b,c

print('a, b, c'.split(', '))#['a','b','c']

list.sort()为list排序方法,sorted()为通用的排序函数 其中的差异在与sort()會直接改变輸入的list,sorted()则会另外回传一个排序好的Object,len()可以获取list的长度。使用 '=' 设定变量则会是传址,等同于前面說的标签概念,把两张标签贴在同一个物件上(number or srting 除外) 这样当我改变Object后,则Object上所有的标签所指到的值都会跟着改变, 若要改成赋值的话可以使用copy() 、 list.list() 与 list[:] 来达到目的.

a = [1, 2, 3]
b = a
a[0] = 4
print(a, b)  #  [4, 2, 3] [4, 2, 3]
c = a.copy()
d = list(a)
e = a[:]
a[0] = 'surprises'
print(a, b, c, d, e)  # ['surprises', 2, 3] ['surprises', 2, 3] [4, 2, 3] [4, 2, 3] [4, 2, 3]

 1.3 Tuples类型

也是一个List,差別只在不能做修改,一旦给定后,无法再进行增加 刪除 修改等操作,所以可以当作一个常数的List。创建为空的时候使用(),一个以上时括号可以省略,但是只有一个时最后一个逗号不可以省略。

a = () #空Tuples

b = 'tem', #b:(tem,) 括号可以省略,但是一个的時候逗号不能省略

c = 'tem1', 'tem2', 'tem3' #('tem1', 'tem2', 'tem3')

d, e, f = c #d:'tem1', e:'tem2', f:'tem3'

结合以上的用法可以有一个超级方便直觉的用法,任意交换变量间的值。
(在等号右边的东西会先形成一个Tuples,再分配给前面的变量。)

a = '1'
b = '2'
c = '3'
b, c, a = a, b, c #a='3',b='1',c='2'

既然他不能修改等等的那相对于List一定也有其他好处

  1. 空间较小
  2. 不会不小心修改到值
  3. 可以当作dictionary的key值 (后一小节有说明)
  4. 命名Tuples,可以做为Object的替代 (第六章会说明)
  5. 函数的传递是以Tuples形式传递

 

1.4字典类型

为一种没有顺序的的容器,其使用的是大括弧{},里面包含键值与值(key : value),可以使用dict()来转换其他类型至dictionary

D.update()合并不同dictionary
del Object刪除某项
in Object是否存在里面(key)
*D.keys() *获得所有key值
D.values()获得所有value值
*D.items() *获得全部的key: value( Tuples类型 )
*D.copy() *复制一个dictionary
*D.clear() *清除所有內容
dic = { 'a':'v','b':'w', }  #最后一个逗号可以省略
dic_ = { 'd':'y','c':'x' }  #最后一个逗号可以省略
print(dic, dic_)   #{'a': 'v', 'b': 'w'} {'d': 'y', 'c': 'x'}
lol1 = [ ['a', 'b'], ['c', 'd'], ['e', 'f'] ]
lol2 = [ ('a', 'b'), ('c', 'd'), ('e', 'f') ]
lol3 = ( ['a', 'b'], ['c', 'd'], ['e', 'f'] )
print(dict(lol1), dict(lol2), dict(lol3)) #{'a': 'b', 'c': 'd', 'e': 'f'} {'a': 'b', 'c': 'd', 'e': 'f'} {'a': 'b', 'c': 'd', 'e': 'f'}
tos1 = [ 'ab', 'cd', 'ef' ]
tos2 = ( 'ab', 'cd', 'ef' )
print(dict(tos1), dict(tos2))  #{'a': 'b', 'c': 'd', 'e': 'f'} {'a': 'b', 'c': 'd', 'e': 'f'}
print(dic_['c'])  # x
dic_['c'] = 'z'
print(dic_['c'])  #z
dic.update(dic_)
print(dic) # {'a': 'v', 'b': 'w', 'd': 'y', 'c': 'z'}
del dic['d']
print(dic) #{'a': 'v', 'b': 'w', 'c': 'z'}
print('a' in dic) #True
print(dic.keys())         # dict_keys(['a', 'b', 'c'])
print(dic.values())       # dict_values['v', 'w', 'x']
print(list(dic.items()))  # [('a', 'v'), ('b', 'w'), ('c', 'x')]
dic_new = dic
dic_new['a'] = 'n'
print(dic, dic_new)  #{'a': 'n', 'b': 'w', 'c': 'z'} {'a': 'n', 'b': 'w', 'c': 'z'}
dic_cp = dic.copy()
dic_cp['a'] = 'm'
print(dic, dic_cp) #{'a': 'n', 'b': 'w', 'c': 'z'} {'a': 'm', 'b': 'w', 'c': 'z'}
dic.clear() 
print(dic)  #{}

1.5集合类型

集合就好比沒有value的dictionary,一样没有顺序,使用大括弧{}
空白集合为set(),也合相当于False。
使用set()可以转换其他类型至集合,dictionary转换至set只会保留key值。
in也可以检查特定元素是否存在其中。

empty_set = set()
even_numbers = {0, 2, 4, 6, 8}
print(empty_set, even_numbers)  #set() {0, 2, 4, 6, 8}
print(set( 'letters' ))  #{'t', 'e', 'l', 'r', 's'}
print(set( ['D', 'A', 'P', 'M'] ))  #{'D', 'P', 'M', 'A'}
print(set( ('U', 'Echoes', 'Atom') ))  #{'U', 'Echoes', 'Atom'}
print(set( {'apple': 'red', 'orange': 'orange'} ))  #{'apple', 'orange'}

1.6比较数据结构

比较不同容器之间的使用差别,使用方括号([])创建列表,使用逗号创建元组,使用花括号({})创建字典。

marx_list = ['Groucho', 'Chico', 'Harpo']
marx_tuple = 'Groucho', 'Chico', 'Harpo'
marx_dict = {'Groucho': 'banjo', 'Chico': 'piano', 'Harpo': 'harp'} 
print(marx_list[2])  # Harpo
print(marx_tuple[2])  # Harpo
print(marx_dict['Harpo']) #harp

1.7建立大型数据结构

dict_of_lists = {'Stooges': ['Moe', 'Curly', 'Larry'],
                'Marxes': ['Groucho', 'Chico', 'Harpo'],
                'Pythons': ['Chapman', 'Cleese', 'Gilliam', 'Jones', 'Palin']}
print(dict_of_lists['Marxes']) #['Groucho', 'Chico', 'Harpo']
print(dict_of_lists['Marxes'][1]) # Chico

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值