python入门第十节标准数据类型下

标准数据类型下

大家好,我们昨天学习了,python的标准数据类型 数字和字符串,今天我们来把剩下的四种学完

列表(List)

  • 列表可变的,它是序列
  • 列表用方括号定义,没有元素类型限制

创建列表

lst1 = []  # 创建一个空列表
lst2 = [1, 2, 3, 4] 
lst3 = [1, 2, 3, "hhh", "china"]
lst4 = ["我", "最", "帅"]
  • list([iterable])
    • 还可以使用list()函数来创建
    • 将一个iterable对象转化为列表并返回,如果没有实参,则返回空列表
    • iterable 可迭代的对象 字符串,列表,元组,字典,集合等都是可迭代对象
lst1 = list()  # 创建一个空列表
lst2 = list(1, 2, 3, 4) 
lst3 = list([1, 2, 3, "hhh", "china"])
lst4 = list("hello")
# 字典作为一个iterable,只有键参与迭代
lst5 = list({1:2,3:4})
lst6 = list((1,2,3))
lst1 = list()  # 创建一个空列表
lst2 = [1, 2, 3, 4] 
lst3 = [1, 2, 3, "hhh", "china"]
lst4 = ["我", "最", "帅"]

查询列表

lst = [1, 2, 3, "hhh", "china"]
# 使用索引进行查询
print(lst[0])  # 1
print(lst[1])  # 2
print(lst[-1])  # "china"
print(lst[-2])  # "hhh"

# 使用切片进行查询
print(lst[0:5:2])  # [1, 3, 'china']
print(lst[-1:-5:-2])  # ['china', 3]
print(lst[0:4])  # [1, 2, 3, 'hhh']
print(lst[:])  # [1, 2, 3, 'hhh', 'china']
print(lst[::-1])  # ['china', 'hhh', 3, 2, 1]

修改列表

lst = [1, 2, 3, "hhh", "china"]
# 使用索引进行查询
lst[0] = 999
lst[1] = 888
print(lst[0])  # 999
print(lst[1])  # 888

# 使用切片修改一个或多个元素
# 修改一个数据
lst[2:3] = [9.87]
print(lst)  # [1, 2, 9.87, 'hhh', 'china']
# 修改多个数据,如果只在一个位置修改了多个数据,该位置会修改,多余的会在该位置后面添加新的数据
lst[2:3] = [7, 8, 9]
print(lst)  # [1, 2, 7, 8, 9, 'hhh', 'china']
# 修改多个不相邻的数据,数据的个数必须和位置的个数相同,否则就会报错
lst[1:5:2] = ['ccc', 'www']
print(lst)  # [1, 'ccc', 7, 'www', 9, 'hhh', 'china']
# 删除元素
lst[2:3] = []
print(lst)  # [1, 'ccc', 'www', 9, 'hhh', 'china']
# 注意:下面这个代码是将空列表 下标2所对应的数据修改为空列表
lst[2] = []
print(lst)  # [1, 'ccc', [], 9, 'hhh', 'china']
# 删除连续的元素 这个方法无法删除不连续的元素
lst[1:3] = []
print(lst)  # [1, 9, 'hhh', 'china']
# 插入一个元素或多个
lst[0:0] = [1]
print(lst)  # [1, 1, 9, 'hhh', 'china']
lst[2:2] = [666, 777, 888]
print(lst)  # [1, 1, 666, 777, 888, 9, 'hhh', 'china']

List中的方法

list.append(x)
  • 在列表的末尾追加一个元素,无返回值,相当于a[len(a):]=[x]
lst = [1, 2, 3, "hhh", "china"]
lst.append(1)
print(lst)  # [1, 2, 3, 'hhh', 'china', 1]
lst.append("abc") 
print(lst)  # [1, 2, 3, 'hhh', 'china', 1, 'abc']
lst.append((999,888))
print(lst)  # [1, 2, 3, 'hhh', 'china', 1, 'abc', (999, 888)]
list.extend(iterable)
  • 使用iterable中的所有元素来扩展列表,无返回值,相当于a[len(a):]=iterable
lst = [1, 2, 3, "hhh", "china"]
lst.extend([5, 6])
print(lst)  # [1, 2, 3, 'hhh', 'china', 5, 6]

list.insert(i,x)
  • i:要插入的元素的索引
  • x:要插入的元素
  • 在指定位置插入一个元素,无返回值
lst = [1, 2, 3, "hhh", "china"]
lst.insert(1, ['a', 'b'])
print(lst)  # [1, ['a', 'b'], 2, 3, 'hhh', 'china']

list.sort([key],reverse=False)
  • key:指定一个函数,在排序之前,列表每个元素先应用这个函数,再根据返回值对原数据进行排序
  • reverse:默认为False,代表升序,指定为True则为降序
  • 对原列表进行排序,无返回值
lst = [2, -4, 1, -5, 6, 3]
lst.sort()
print(lst)  # [-5, -4, 1, 2, 3, 6]
lst.sort(reverse=True)
print(lst)  # [6, 3, 2, 1, -4, -5]
lst.sort(key=abs)
print(lst)  # [1, 2, 3, -4, -5, 6]
lst.sort(key=abs, reverse=True)
print(lst)  # [6, -5, -4, 3, 2, 1]

sorted(iterable,[key],reverse=False)
  • iterable:可迭代对象(字符串,列表,元组,字典,集合等)
  • key:指定一个函数,在排序之前,每个元素都先应这个函数之后再排序
  • reverse:默认为False,代表升序,指定为True则为降序
  • 对可迭代对象进行排序,以列表形式返回排序之后的结果
lst = [2, -4, 1, -5, 6, 3]
# 升序排序
print(sorted(lst))  # [-5, -4, 1, 2, 3, 6]
# 降序排序
print(sorted(lst, reverse=True))  # [6, 3, 2, 1, -4, -5]
# 对lst中的元素按照绝对值的大小降序排序
print(sorted(lst, key=abs, reverse=True))  # [6, -5, -4, 3, 2, 1]
# 对字符串排序
print(sorted('hello world'))  # [' ', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']

list.reverse()
  • 把列表中的元素倒过来,无返回值
lst = [2, -4, 1, -5, 6, 3]
lst.reverse()
print(lst)  # [3, 6, -5, 1, -4, 2]
reversed(seq)
  • 返回给定序列的反向迭代器
lst = [1, 3, 5, 2]
obj = reversed(lst)
print(list(obj))  # [2, 5, 3, 1]
string = 'hello'
obj = reversed(string)
print(list(obj))  # ['o', 'l', 'l', 'e', 'h']
list.count(x)
  • 返回元素x在列表中出现的次数
lst = [1, 3, 5, 2]
print(lst.count(2))  # 1
list.index(x[,start[,end]])
  • x:要找的值
  • start:起始索引,默认为0
  • end:结束索引(闭区间),默认为len(list)
  • 返回从左边开始第一次找到指定值时的正向索引,找不到报错
lst = [1, 2, 3, 2, '23', [2, 4]]
print(lst.index(2))  # 1
print(lst.index(2, 4))  # ValueError
list.pop([i])
  • i:要删除元素的索引
  • 如果没有这样的元素,则报错
lst = [567, 'hello', True, 456]
print(lst.pop())  # 456
print(lst)  # [567, 'hello', True]
list.remove(x)
  • 删除列表中从左往右遇到的第一个x元素,无返回值
  • 删除列表中指定索引的元素并返回该元素
  • 如果没有指定索引,将会删除并返回列表中的最后一个元素
lst = [567, 'hello', True, 456, 567]
lst.remove(567)
lst.remove(567)
print(lst)  # ['hello', True, 456]

list.copy()
  • 返回列表的一个浅拷贝,等价于a[:]
lst = [567, 'hello', True, False, 456]
new_lst = lst.copy()
print(new_lst)  # [567, 'hello', True, False, 456]

list.clear()
  • 移除列表中的所有元素,无返回值,等价于del a[:]
lst=[567, 'hello', True, False, 456]
lst.clear()
print(lst)  # []

元组(Tuple)

  • 不可变,是序列
  • 元组用圆括号定义(圆括号可省略),没有元素类型限制

创建元组

tup = ()  # 创建一个空元组
# 元组中只有一个元素时,逗号不可以省略
tup = (123,)
# 这不是元组,仍然是数字123
tup = (123)
# 封包(等号右边有不带括号的多个数据,python会自动将这些数据封包成一个元组)
tup = 'abc', 123, 456
# 等价于上面的这句
tup = ('abc', 123, 456)

  • 使用tuple([iterable])方法创建元组
tup = tuple()  # 创建一个空元组

tup = tuple([1, 2, 3])
# 字典作为一个iterable,只有键参与迭代
print(tuple({1:2, 3:4}))
print(tuple({'a', 'b', 'c', 789, 456}))

查询元组 与 修改元组

# 元组的查询和列表相同
tup = (456, 123, ([678, 8910],))
# 元组是不可变的,但其中的可变成员仍然可以被改变
tup[-1][0][0] = 987
print(tup)  # (456, 123, ([987, 8910],))

元组方法

tuple.count(x)
  • 返回元素x在元组中出现的次数
tup = (456, 123, ([678, 8910],))
print(tup.count(456))  # 1

tuple.index(x[,start[,end]])
  • x:要找的值start:起始索引,默认为0
  • end:结束索引(闭区间),默认为len(list)
  • 返回从左边开始第一次找到指定值时的正向索引,找不到报错
tup = (1, 2, 3, 2, '23', [2, 4])
print(tup.index(2))  # 1
print(tup.index(2, 4))  # ValueError

字典(Dictionary)

  • 可变,不是序列
  • 字典用花括号定义,每个元素都是键值对的形式key:value
  • 字典的键不能存在可变的数据;值没有限制。
  • 字典的键如果重复,会自动去重,保留第一个重复键,并且其它重复的键对应的值还会对第一个重复键对应的值进行修改;值可以重复。
  • 当字典作为一个iterable对象参与操作时,只有键参与迭代。

创建字典

一共有六种创建字典的方式

# 1.直接在空字典里面写键值对
d = {'name': 'tom', 'age': 66}
print(d)  # {'name': 'tom', 'age': 66}

# 2.定义一个空字典,再往里面添加键值对
d = {}
d['name'] = 'Tom'
d['age'] = 66
print(d)  # {'name': 'tom', 'age': 66}

# dict(**kwarg)
# 3.把键作为关键字传入
d = dict(name="tom", age=28)
print(d)  # {'name': 'tom', 'age': 28}

# dict(iterable)
# 4.用可迭代对象来构建字典
d = dict((['name', 'age'], ['Tom', 28]))
print(d)  # {'name': 'age', 'Tom': 28}

# dict(mapping)
# 5.用映射结构构建字典
d = dict(zip(['name', 'age'], ['Tom', 28]))
print(d)  # {'name': 'Tom', 'age': 28}

# 6.利用类方法fromkeys()创建 classmethodfromkeys(iterable[,value])
# 以iterable的每个元素作为键,value作为所有值,创建一个字典,value不指定时,默认为None
d = dict.fromkeys(('name', 'age', 'height'))
print(d)
d = dict.fromkeys(('name', 'age', 'height'), 'abc')
print(d)

zip(*iterables)
  • 返回一个迭代器,在进行迭代操作时,其中的第i个元组包含来自每个可迭代对象的第i个元素
  • 当所输入可迭代对象中最短的一个被耗尽时,迭代器将停止迭代
  • 不带参数时,它将返回一个空迭代器
obj = zip('abcd', [4, 5, 7, 1])
print(list(obj))  # [('a', 4), ('b', 5), ('c', 7), ('d', 1)]
obj = zip(['abcd', 4, 5, 7])
print(list(obj))  # [('abcd',), (4,), (5,), (7,)]
obj = zip('abcd')
print(list(obj))  # [('a',), ('b',), ('c',), ('d',)]
obj = zip()  
print(list(obj))  # []

访问和修改字典

# 访问字典里的值
d = {'Name': 'Tom', 'Age': 7, 'Class': 'First'}
print(d['Name'])  # Tom
print(d['Age'])  # 7
# 如果指定的键不存在,则报错
print(d['Gender'])  # KeyError

# 修改字典里的值
d = {'Name': 'Tom', 'Age': 7, 'Class': 'First'}
# 修改指定键所对应的值
d['Name'] = 'Tony'
d['Age'] = 8
print(d)  # {'Name': 'Tony', 'Age': 8, 'Class': 'First'}
# 如果指定的键不存在,则新增该键值对
d['Gender'] = 'male'
print(d)  # {'Name': 'Tony', 'Age': 8, 'Class': 'First', 'Gender': 'male'}

字典方法

dict.keys()
  • 返回由字典键组成的一个新视图
  • 返回的对象是视图对象,这意味着当字典改变时,视图也会相应改变
d = {'Name': 'Tom', 'Age': 7, 'Class': 'First'}
view_keys = d.keys()
print(view_keys)  # dict_keys(['Name', 'Age', 'Class'])
# 修改字典
d['weight'] = 59
print(view_keys)  # dict_keys(['Name', 'Age', 'Class', 'weight'])

dict.values()
  • 返回由字典值组成的一个新视图
  • 返回的对象是视图对象,这意味着当字典改变时,视图也会相应改变
d = {'Name': 'Tom', 'Age': 7, 'Class': 'First'}
view_values = d.values()
print(view_values)  # dict_values(['Tom', 7, 'First'])
# 修改字典
d['weight'] = 59
print(view_values)  # dict_values(['Tom', 7, 'First', 59])
dict.items()
  • 返回由字典键值对组成的一个新视图
  • 返回的对象是视图对象,这意味着当字典改变时,视图也会相应改变
d = {'Name': 'Tom', 'Age': 7, 'Class': 'First'}
view_items = d.items()
print(view_items)  # dict_items([('Name', 'Tom'), ('Age', 7), ('Class', 'First')])
# 修改字典
d['weight'] = 59
print(view_items)  # dict_items([('Name', 'Tom'), ('Age', 7), ('Class', 'First'), ('weight', 59)])
dict.get(key,default=None)
  • key:键
  • default:如果指定的键不存在时,返回该值,默认为None
  • 返回指定的键key对应的值,如果key不在字典中,则返回default
d = {'Name': 'Tom', 'Age': 7, 'Class': 'First'}
print(d.get('Age'))  # 7
print(d.get('weight'))  # None
print(d.get('weight', '该键不存在'))  # 该键不存在

dict.update([other])
  • 使用来自other更新字典,没有返回值
  • 可以像dict()那样传参
d = {'Name': 'Tom', 'Age': 7, 'Class': 'First'}
d.update(Age=18, weight=59)
d.update({'Age': 18, 'weight': 59})
d.update(zip(['Age', 'weight'], [18, 59]))
d.update([('Age', 18), ('weight', 59)])
print(d)  # {'Name': 'Tom', 'Age': 18, 'Class': 'First', 'weight': 59}
dict.pop(key[,default])
  • key:键
  • default:指定当键不存在时应该返回的值
  • 移除指定的键所对应的键值对,并返回该键对应的值,如果该键不在字典中,则返回default指定的值
  • 如果default未指定值且指定的键不存在于字典中,则报错
d = {'name': 'Tom', 'age': 15, 'height': 162}
print(d.pop('height'))  # 162
print(d)  # {'name': 'Tom', 'age': 15}
print(d.pop('weight', None))  # None
dict.popitem()
  • 从字典中移除最后一个键值对, 并返回它们构成的元组 (键, 值)
d = {'name': 'Tom', 'age': 15, 'height': 162}
print(d.popitem())  # ('height', 162)
print(d)  # {'name': 'Tom', 'age': 15}
dict.setdefault(key, default=None)
  • 如果字典存在指定的键,则返回它的值
  • 如果不存在,返回 default 指定的值,并且新增该键值对
d = {'name': 'Tom', 'age': 15, 'height': 162}
print(d.setdefault('age'))  # 15
print(d.setdefault('weight'))  # None
print(d)  # {'name': 'Tom', 'age': 15, 'height': 162, 'weight': None}
print(d.setdefault('gender', 'male'))  # male
print(d)  # {'name': 'Tom', 'age': 15, 'height': 162, 'weight': None, 'gender': 'male'}
dict.copy()
  • 返回原字典的浅拷贝
d = {'name': 'Tom', 'age': 15, 'height': 162}
new_d = d.copy()
print(new_d)  # {'name': 'Tom', 'age': 15, 'height': 162}
dict.clear()
  • 移除字典中的所有元素,无返回值
d = {'name': 'Tom', 'age': 15, 'height': 162}
d.clear()
print(d)

集合(Set)

  • 可变,不是序列
  • 集合也用花括号定义,但其中的元素不是键值对
  • 集合中不能存在可变的数据
  • 集合是无序的
  • 集合的元素如果重复,会自动去重
  • 创建空集合必须用 set(),因为 { } 是用来创建空字典的

# 空集合
s = set()
print(s)
# 空字典
d = {} # d = dict()
print(d)
# 集合中不能存在可变的数据
s = {789, 456, "hello", (135,), 'world'}
print(s)
set([iterable])
  • 将一个iterable对象转化为集合并返回,如果没有实参,则返回空集合
print(set())
print(set("hello"))
print(set([1, 2, 3]))
print(set((1, 2, 3)))
# 字典作为一个iterable, 只有键参与迭代
print(set({1: 2, 3: 4}))
  • 利用集合特性,可以用来 去重 和 关系测试
# 把iterable变成集合,就会自动去掉重复的元素
lst = [1, 2, 4, 5, 7, 7, 4, 5]
s = set(lst)
print(list(s))
# 集合可以利用操作符做关系测试
a = set('abdefga')
b = set('abc')
c = set('aef')
print(a >= b) # 判断a是否为b的父集
print(c <= a) # 判断c是否是a的子集
print(c < a) # 判断c是否是a的真子集
print(a - b) # 返回a和b的差集
print(b - a) # 返回b和a的差集
print(a | b) # 返回a和b的并集
print(a & b) # 返回a和b的交集
print(a ^ b) # 返回a和b的对称差集
# 优先级: - & ^ |
print(a - b | c ^ b & a)

集合方法

set.update(*others)
  • others:Iterable
  • 更新集合,添加来自 others 中的所有元素
s = '12'
lst = [1, '2']
d = {1: '1', 2: '2'}
set1 = {'1', '2', 1, 3}
set1.update(s, lst, d)
print(set1)  # {1, 2, 3, '2', '1'}
set.add(elem)
  • 将元素elem添加到集合中,如果元素已经存在,则没有影响
s = {1, 2, 3}
s.add("hello world")
print(s)  # {1, 2, 3, 'hello world'}
set.remove(elem)
  • 从集合中移除元素 elem。 如果 elem 不存在,则报错
s = {1, 2, 3, 4}
s.remove(3)
print(s)  # {1, 2, 4}
set.discard(elem)

-从集合中移除元素 elem。 如果 elem 不存在,则不做任何操作

s = {1, 2, 3, 4}
s.discard(3)
s.discard(3)
s.discard(3)
print(s)  # {1, 2, 4}
set.pop()
  • 从集合中移除并返回任意一个元素。如果集合为空,则报错
s = {'1', '2', 'hello', 789}
print(s.pop())  # 2
print(s)  # {'1', 789, 'hello'}
set.copy()
  • 返回原集合的浅拷贝
set1 = {'1', '2', 1, 3}
set2 = set1.copy()
print(set2)  # {1, 3, '1', '2'} 为什么会这样 因为set是无序的
set.clear()
  • 从集合中移除所有元素
s = {'1', '2', 'hello', 789}
s.clear()
print(s)  # set()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙_尧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值