python3入门(3)---列表、元组、字典、集合详解

列表类型

访问list的值:

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

print(list1[0])  # 1
print(list1[0: 1]) #[1]
print(list1[0: 2]) #[1, 2]
print(list1[1:]) # [2, 3, 4, 5]
print(list1[: 2]) # [1, 2]
print(list1[::-1]) # [5, 4, 3, 2, 1]

print(list1[-2]) #4

更新list:

list1[2] = 1000

print(list1) #[1, 2, 1000, 4, 5]

删除list中元素:

del list[1]

print(list1) #[1, 1000, 4, 5]

其他:

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

print(list1 + [6, 7]) # [1, 2, 3, 4, 5, 6, 7]
print(list1 * 2) #[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
len(list)  # 5
print(7 in list1) # False

## 遍历list
for item in list1:
  print(item)
for i in range(0, len(list1)):
  print(list1[i])

嵌套列表,类似于多维数组:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c', 'd']
list3 = [list1, list2]

print(list3) # [[1, 2, 3], ['a', 'b', 'c', 'd']]
print(list3[0]) #[1, 2, 3]
print(list3[1][2]) # c

列表函数&方法:

名称 含义
min(list) 返回list中最小值
max(list) 返回list中最大值
len(list) 返回list的长度
list(seq) 将序列seq转换为list,支持list,tuple,set,dict,dict只获取dict.keys()
list.append(obj) list末尾新增obj,直接作用于list,返回值为None
list.count(obj) 统计obj在list中出现的次数
list.extend(seq) 在list末尾增加序列seq,支持list,tuple,set,dict,dict只获取dict.keys()
list.index(obj) 找出obj在list中第一个匹配的下标,没有则抛出异常ValueError: obj is not in list
list.insert(index, obj) 将obj插入list,指定索引为index
list.pop([index]) 移除列表中一个元素,默认为-1(最后一个),也可以指定index
list.remove(obj) 查找到第一个obj元素,并从列表中移除obj
list.reverse() 反转list
list.sort([key, reverse]) reverse为True时,降序排列,为False时(默认),升序排列
list.clear() 清空列表
list.copy() 复制列表
tuple1 = (1, 2, 3, 4)
set1 = {1, 3, 5, 6}
dict1 = {1: 'a', 2: 'b'}

print(list(tuple1)) #[1, 2, 3, 4]
print(list(set1)) #[1, 3, 5, 6]
print(list(dict1)) #[1, 2]

元组

与list相似,只是不能修改

tips:重新赋值的元组 tup,绑定到新的对象了,不是修改了原来的对象

字典

dict1 = {"1": "yi", "2":"er","3":"san"}

## 取值
print(dict1["1"])  # yi
## 修改字典
dict1["1"] = "一"
print(dict1["1"])  # 一
del dict1["1"] #删除字典元素
dict1.clear() #清空字典
del dict1 #删除字典

字典键的特性:

  1. 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
  2. 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行

字典内置函数&方法:

dict = {"1": "yi", "2":"er","3":"san"}

名称 含义
len(dict) dict的长度
dict.copy() 浅拷贝dict
dict.fromkeys(seq) 从seq序列中的元素作为字典的key,值为None
dict.get(key[,default]) 从dict中获取key对应的value,不存在默认为None,可以指定default
key in dict dict中包含key则返回True,否则False
dict.items() 返回一个序列,每一个元素为key-value,可以转换为set、tuple、list
dict.keys() 返回一个序列,每一个元素为key,可以转换为set、tuple、list
dict.setdeault(key[,default]) 与get类似,但是如果key不存在与dict中,添加key进入字典dict,default默认为None,可以自定义
dict.update(dict1) 把dict1对应的key-value添加到dict,并更新原有的值
dict.values() 返回一个序列,每一个元素为value,可以转换为set、tuple、list
dcit.pop(key[,default]) 删除key对应的值,返回值为value,如果不存在,返回default,默认为None
dict.popitem() 返回一个键值对(key,value)形式,按照 LIFO(Last In First Out 后进先出法) 顺序规则,即最末尾的键值对
list1 = [1,2,3,4]

print(dict2.fromkeys(list1)) # {1: None, 2: None, 3: None, 4: None}
print(dict1.items())  #dict_items([('1', '一'), ('2', 'er'), ('3', 'san')])
print(dict1.keys())  #dict_keys(['1', '2', '3'])

集合

tips:初始化集合不能用{},只能通过set()

a = set('asdfghjkl')
b = set('abcdefghi')
print(a)  #{'a', 'g', 'h', 'j', 'f', 'l', 's', 'k', 'd'}
print(b)  #{'c', 'a', 'g', 'h', 'b', 'e', 'f', 'i', 'd'}

print(a - b)  # a和b的差集  {'s', 'k', 'l', 'j'}
print(a | b)  # a和b的合集  {'k', 'l', 'd', 'e', 'h', 'f', 'i', 'c', 's', 'b', 'j', 'a', 'g'}
print(a & b)  # a和b的交集  {'d', 'h', 'f', 'a', 'g'}
print(a ^ b)  # a和b的全集和交集的差集  {'k', 'l', 'e', 'j', 'i', 's', 'b', 'c'}

## 集合推导式(Set comprehension)
set1 = {x for x in 'aadasfdsf' if x not in 'abc'}
print(set1)  #{'d', 's', 'f'}


## 集合添加元素
set.add(obj)  #如果元素已存在,不进行任何操作
set.update(obj) #参数可以是列表,元组,字典等

## 移除元素
set.remove(obj) # set中不存在元素,报错
set.discard(obj) #set中不存在元素,不报错
set.pop() #随机删除一个set元素

## 元素个数
len(set)

## 清空
set.clear()

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