美文网首页
2018-07-23 day06

2018-07-23 day06

作者: Kris_Shin | 来源:发表于2018-07-23 17:22 被阅读0次

列表方法(补)

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))

相关文章

网友评论

      本文标题:2018-07-23 day06

      本文链接:https://www.haomeiwen.com/subject/fpbjmftx.html