第三章 容器 ---->列表、元组、字典、set

集合容器:列表 元组 列表和元组相互转换 字典 set

列表:

用一对方括号[]表示 列表中可以存储任何类型的数据

一般情况下一个列表存放的数据类型 都一样 这样便于对列表的操作


增:

list.append(value) 在列表尾部添加元素

value = list.insert(index) 根据索引向列表中插入元素

list.extend(list1) 向list追加list1中所有的元素 也是两个列表相连接的意思


删:

list.remove(value) 移除列表中某个元素

list.pop() 删除列表末尾元素

list.pop(index) 根据索引删除元素

del list[index] 根据索引删除元素


查:

value = list[index] 根据索引查找元素

list.count(value) 统计列表中某个元素出现次数

index = list[value] 根据值来查找对应的索引

len(list) 列表长度

max(list) 列表中元素最大值 仅限于列表中都是数字的情况

min(list) 列表元素最小值


改: list[index] = value

切片: list[x:y:l] x:从索引几开始(包含) y:到索引几结束(不包含) l:每次切片的长度

常见的几种情况

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

#从头切到位

print(list[::]) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

print(list[1:5:2]) #[2, 4]

print(list[0:5:2]) #[1, 3, 5]

print(list[::-1]) #[0, 9, 8, 7, 6, 5, 4, 3, 2, 1]

print(list[::-2]) #[0, 8, 6, 4, 2]

print(list[-2:1:-2])#[9, 7, 5, 3]

print(list[-2:1:2]) #[]若找不到则输出空列表

print('*'*30)


判断:

in 在则输出Ture 否则返回False

not in 不在则输出Ture 否则返回False


反转:

reserve()

list.reverse() 对原列表倒叙排列

list.sort() 按顺序排列

'''

#reverse = True 时倒序排列

list1 = [1,2,3,4,5,69,0,7,8,]

print(list1)

list1.sort()# list.sort()=list.sort(reserve = False)

print(list1)

list1.sort(reverse = True)#false 默认正序 Ture 默认倒序

print(list1)

'''


遍历: for in while enumerate

'''

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

print('****************1、for 变量名 in list*******************')

for a in list1:

 print(a)

print('****************2、for index in range(list)*******************')

for a in range(len(list1)):

print('index-->%s,value-->%s'%(a,list1[a]))

print('****************3、while index < len(list)*******************')

a = 0

while a < len(list1):

print('index-->%s,value-->%s'%(a,list1[a]))

a+=1

print('****************4、for index,obj in enumerate(list)*******************')

for a,obj in enumerate(list1):

print('index-->%s,value-->%s'%(a,list1[a]))

'''


元组:

tuple用一对小括号()表示

元组和列表相似 但是元组是不可改变的

有查询,判断的操作

max(tup) min(tup) value = tup[index] len(tup) in not in

删除的话是删除整个列表

和列表一样也可以使用四种方法遍历

列表和元组相互转换:

list = list(tup)

tup = tuple(list)

'''

list1 = [5,6,7]

tup = tuple(list1)

print(tup)

tup = (1,2,3)

list1=list(tup)

print(list1)

'''


字典:

用对花括号表示{key:value}

字典里面元素都是键值对的形式存在 key必须是唯一的 value可以是任何类型


增(改):

map('key') = value 若字典中没有该键则添加 若有则更新此键对应的值


删:

map.pop(key) 根据键删除元素 并将此元素返回

map.popitem() 随机删除一个键值对

del map[key] 根据键删除元素

map.clear() 清空字典


查:

value = map[key] 根据键查询值 若无此键报错

value = map.get(key,[默认值]) 如果key不存在,可以返回None,或者自己指定的value

len(map) 字典中键值对的个数

str(map) 输出字典可打印的字符串表示

map.keys() 输出所有键

map.values() 输出所有值

map.items() 输出所有键值对


判断: in not in

遍历:for循环遍历的三种方式

'''

map1 =  {'a':'a','b':'b','c':'c','d':'d'}

for a in map1.keys():

print('key-->%s,value-->%s'%(a,map1[a]))

print('***********************************')

for a in map1:

print('key-->%s,value-->%s'%(a,map1[a]))

print('***********************************')

for k,v in map1.items():

print('key-->%s,value-->%s'%(k,v))

'''


其他操作:

map2 = map1.copy() 返回一个新的字典,内容一样,地址不同

dict.update(dict2) 把字典dict2的键值对更新到dict里

和list比较,dict有以下几个特点:

查找速度极快,不会随着key的增加而变慢;

需要占用大量的内存,内存浪费多。

而list:

查找和插入的时间随着元素的增加而增加;

占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。

set:

set = {值1,值2,.....值}

set是无序的 元素不可重复的集合 可以用来过滤重复元素

增:

set.add(value) 向set中添加元素

set.update(value) 将一个可迭代的内容,一一加入set中


删:

set.pop() 删除任意一个值

set.discard(value) 删除指定元素 若无此元素也不报错

set.remove(value) 删除指定元素 若无此元素报错

set.clear() 清空set集合


其他:

| 并集

& 交集

intersection 交集函数 print(set.union(set1))

- 差集

difference 差集

in 判断

union 联合

issubset 子集

issuperset 父集


多维:

多维列表,元组

就是列表里套列表 这里以列表为例子

'''

list1 = [[1,2],[1,2,3],[1,2,3,4,],[1,2,3,4,5]]


#遍历此列表

x = 0

#外层循环遍历行

while x < len(list1):

y = 0

#内层循环遍历列

while y < len(list1[x]):

print('x-->%s,y-->%s,xy-->%s'%(x,y,list1[x][y]))

y+=1

x+=1

'''

传递:

可变类型:列表 字典 set

两个变量引用同一个元素时 地址值是相同的,

当一个变量值发生变化另一个变量值 也会发生变化

不可变类型:int float str bool None 元组

两个变量引用一个值时,地址值时相同的修改一个变量值,

不会影响另外一个变量值

'''

#不可变类型

a = 1

b = a

print(a)

print(id(a))

print(b)

print(id(b))

print('**********************')

a = 2

print(a)

print(id(a))

print(b)

print(id(b))

print('**********************')

#可变类型

set = {1,2,3,4,5,56}

set1 = set

print(set)

print(id(set))

print(set1)

print(id(set1))

print('**********************')

set.pop()

print(set)

print(id(set))

print(set1)

print(id(set1))

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容