2018-07-23 day06

列表方法(补)

1.修改列表元素

  • 通过下标获取元素,然后重新赋值:列表名[下标] = 新元素值
  • 注意:下标不能越界
names = ['张家辉', '古天乐', '陈小春', '周星驰', '小翟总']  # 定义一个列表
names[-1] = '刘德华'  # 修改最后一个元素值
print(names)

2.列表的其他操作

  1. len(列表): 获取列表的长度(元素个数)
  2. 列表1+列表2:列表1和列表2组合成一个新的列表
  3. 列表*整数:重复列表几次
print(len([1, 2, 3, 5, 5, 7, 8, 9]))
  1. in /not in 操作
  • 元素 in 列表:判断指定的元素是否在指定的列表中
result = '苏见信' in names  # 判断names列表中有没有'苏见信'
print(result)

3.获取列表中的最大元素和最小元素

  • max(列表)
  • min(列表)
lis1 = [1, 2, 4, 5, 6, 8, 0, 9]
lis2 = ['a', 'f', 'g', 'h', 'e', 't', 'y', 'u', 'f']
print(max(lis1))
print(min(lis2))

练习1:获取列表中最大值

numbers = [1, 23, 5, 7, 46536, 87, 23, 4, 53, 1]
maxn = numbers[0]  # 使最小值等于列表第一个值

for i in numbers:
    if maxn < i:  # 如果有比这个值更大的值
        maxn = i  # 将这个值赋值到最大值变量
print(maxn)

4.其他方法

# count:获取指定元素在列表中出现的次数

print(numbers.count(1))

# 列表.extend(序列):将序列的每一个元素,添加到列表中
names.extend('SHIN')
print(names)
names.extend(['Shin'])
print(names)
# 列表.index():获取指定元素在指定列表中的索引(如果有多个,取第一个)
print(numbers.index(1))
# 列表.reverse() 反向列表中的元素0 直接操作原列表  不会产生新的列表
nums = [1, 2, 3, 4]
nums.reverse()
print(nums)
# 列表.sort():对列表元素进行排序
nums = [4, 5, 45, 23, 3126, 8, 2, 54, 4, 0, 3, 236, 2]
nums.sort()  # 升序
print(nums)
nums.sort(reverse=True)  # 降序
print(nums)
# 列表.clear():清空列表中的元素
nums.clear()
# nums = [] 效果同上
print(nums)
# 列表.copy():复制列表全部元素到新列表中
names = ['z3', 'l4']
# nNames = names.copy()
nNames = names[:]
print(nNames)

注意:通过一个列表变量给另一个列表赋值的时候,赋的是地址,两个列表对元素的操作会互相影响

可以使用copy和切片来避免

元组

1. 什么是元组

  • 元组就是不可变的列表,列表中除了可变的操作,其他操作都适用于元组
  • 元组值:使用()将元素包含起来,多个元素之间用逗号隔开(1,1,'132')
  • 元素的类型可以是任何类型
  • 改,删,增相关操作都不行,只能查找

a.查(与列表相同)

colors = ('red', 'yellow', 'white', 'black', 'blue')
print(colors[1])
print(colors[0:2])
print(colors[0::2])
for i in colors:  # 遍历列表所有元素
    print(i)

b.len() # 计算列表元素个数

print(len(colors))

c.in/not in # 判断元素是否存在

print('red' in colors)

d.+和* # 符号操作

print((1, 2) + (3, 4))
print((1, 2) * 3)

e.元组补充(列表也可以用)

获取元组元素

names = ('name1', 'name2', 'z')
x, y, z = names  # 变量个数和元组个数必须一样
print(x, y)

fst, *middel, lat = colors  # 变量前加*可以把变量变成列表,获取多个元素
print(fst, middel, lat)

*cl, color = colors
print(cl, color)

color, *cl = colors  # color获取第一个元素,剩下作为cl的列表
print(cl, color)

字典

  • 字典也是一种容器类型的数据类型(序列),存的数据是以键值对的形式出现,字典中的元素全部都是键值对
  • 字典是可变的,但是是无序的(不能使用下标)
  • 键必须是唯一的
  • 键值对: 键:值(key:value):键值对中key是形式,值才是要保存的内容
  • 键:理论上是任何不可变的数据类型,实际开发的时候一般使用str作为key
  • 值: 可以试任意数据类型

1.声明一个字典

a.创建一个字典变量

dict1 = {}  # 创建一个空字典
print(type(dict1))

dict2 = {'a': 1, 'b': 'abc', 10: [1, 2, 3], ('a', 'b'): 'abc'}
print(dict2)

b.其他数据类型转换为字典

dict3 = dict([(1, 2), (2, 3)])  # 了解
print(dict3)

2.字典的增删改查

a.查 获取字典的键的值

  • 字典获取元素的值是通过key

  • 字典名[key]

  • 如果key不存在,会报KeyError

person = {'name': 'Jordan', 'height': '198', 'weight': 98}
print(person['height'])

# 字典.get(key)
print(person.get('name'))
print(person.get('asdasd'))  # 如果Key不存在返回None

注意:如果key值确定存在,使用[]获取值,不确定key值是否存在才使用get方法

b.增加/修改元素

  • a.通过key获取字典元素,然后赋值/修改,key不存在时,添加键值对,key存在时,修改元素值

person['speed'] = 95  # 没有该key,则增加一对键值对
print(person)
person['weight'] = 103  # weight key存在,则修改weight的值
print(person)
  • b.删除

注意:key值不存在会报KeyError

# del dict[key] 删除键值对
del person['weight']
print(person)

# 字典.pop(key) 取出一个值  会返回被弹出键值对的值
speed = person.pop('speed')
print(person, speed)

3.相关的数组属性

  • 字典.keys():获取字典所有的key,返回值的类型是dict_keys,但是可以把它当成列表来使用

  • 字典.values():获取字典所有的value

  • 字典.items():获取所有的键值对作为元组

student_dict = {
    'name': 'zhang3',
    'sId': 'py123456',
    'scores': {
        'eng': 98,
        'math': 50
    }
}
keys = student_dict.keys()
print(keys)
# 遍历获取所有key
for key in keys:
    print(key)

print(student_dict.values())
print(student_dict.items())

4.遍历字典

# a.直接遍历字典获取到是所有的key(推荐)
for key in student_dict:
    print(key, student_dict[key])

# b.
for key, value in student_dict.items():
    print(key, value)

5.列表中有字典.字典中有字典,字典中有列表

  • 声明一个变量,作用是用来存储一个班级所有学生的信息,信息包括姓名,年龄,性别,电话
    至少村三个学生
allStus = {}  # 声明一个空字典
stu1 = {'name': '1', 'age': 10, 'gender': 'male', 'tel': '123123123'}
stu2 = {'name': '2', 'age': 10, 'gender': 'male', 'tel': '123123123'}
stu3 = {'name': '3', 'age': 10, 'gender': 'male', 'tel': '123123123'}
allStus = [stu1, stu2, stu3]

6.其他操作

1.fromkeys()
dict.fromkeys(seq,value):创建一个新的字典,序列中的元素依次作为key,value作为值

list1 = ['name', 'age']
dict1 = {}
dict1 = dict1.fromkeys(list1, 123)
print(dict1)

2.in
key in dict:判断字典中是否存在制定的key

dogs = {'color': '1', 'age': 1}
print('color' in dogs)


3.update
dict1.update(dict2):使用dict2中的元素去更新dict1中的键值对.如果dict2中对应的键值对不存在,则添加,存在则更新值

dict1 = {'q': 1}
dict2 = {'q': 2, 'w': 4}
dict1.update(dict2)
print(dict1)

集合

  • 集合也是一种容器类型的数据类型(序列);数据放在{}中,多个之间用逗号隔开:{1,2,'a'}
  • 特性:无序的(不能通过索引取值),可变的(可以增删改),元素不能重复
  • 可以进行数学集合操作: 判断是否包含,求交,并,补,差

1.声明集合

# a.声明一个变量,赋一个集合值
set1 = {1, 2, 3}
set2 = set()  # 空集合
print(set1, type(set1))
# b.将其他的数据类型转换为集合
set2 = set('123asd123')  # 将其他数据转换为集合自动去重 顺序会变
print(set2)

2.增删改查

注意:集合无法获取某个单独的元素

# a.查:遍历

for i in set2:
    print(i)
# b.增
# 集合.add(元素):在指定的集合中添加指定元素
set1 = {1, 2, 3}
set1.add(100)
print(set1)

# 集合1.update(集合2):将集合2中的元素添加到集合1中,去重
set1.update(set2)
print(set1)
# c.删
# 集合.remove(元素):在集合中删除指定元素
set1.remove('s')
print(set1)

# pop()随机删除一个
set1.pop()
print(set1)

注意:改不了

3.判断是否包含

set1 >= set2  判断集合1中是否包含集合2
set1 <= set2  判断集合2中是否包含集合1

print({1, 2, 3} >= {1, 2})  # True
print({1, 2, 3} >= {1, 4})  # False
print({1, 2, 3} <= {1, 2})  # False

4.数学的集合运算

# 求并集:|
print({1, 2, 3} | {2, 3, 4})  # {1, 2, 3, 4}
# 求交集:&
print({1, 2, 3} & {2, 3, 4})  # {2, 3}
# 求差集:-
print({1, 2, 3} - {2, 3, 4})  # {1}
# 求补集:^
print({1, 2, 3} ^ {2, 3, 4})  # {1, 4}

5.其他相关方法

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

推荐阅读更多精彩内容

  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 18,952评论 17 410
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,652评论 18 139
  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 5,814评论 2 16
  • 佛像雕塑艺术是中雕塑的艺术宝库,其技巧由简明质朴发展到了精巧圆熟;风格由雄伟、挺秀转为庄严、富丽;体现了中国佛教的...
    吾吾斋阅读 820评论 0 0
  • Xcode下使用gtest 编译gest 下载gest代码 进到目录:googletest-master/goog...
    龙翱天际阅读 3,556评论 0 0