python中所有元素必须为相同类型的数据_Python之常用数据类型详解

tuple 元组

1 #定义

2 temp = (2, ) #规范定义,单个元素的元组

3 tem = 2, #可行,但不规范定义

4 tep = () #空元组

5

6 tp = (1, 'ss', 3.5, [6, 'dd']) #元组中 可存放任何的 数据类型 int、float、str、bool、字符串、字典、列表等

7 #通过索引获取元组中的元素

8 print(tp[3]) #输出:[6, 'dd']

9 print(tp[3][1]) #输出:'dd'

10 print(tp[::-1]) #输出:([6, 'dd'], 3.5, 'ss', 1)

元组解包

1 #元组解包

2 c1, c2, c3, c4 = (3, 'd', 5.6), 7.8, 'ee', 4 < 5

3 print('''

4 c1类型:{},c1 = {}5 c2类型:{},c2 = {}6 c3类型:{},c3 = {}7 c4类型:{},c4 = {}8 '''.format(type(c1), c1, type(c2), c2, type(c3), c3, type(c4), c4))9

10 #输出:

11 c1类型:,c1 = (3, 'd', 5.6)12 c2类型:,c2 = 7.8

13 c3类型:,c3 =ee14 c4类型:,c4 = True

list 列表

1 #定义

2 li = [1] #单个元素的列表

3 ls = [1, 'ss', 3.5, [6, 'dd'], 4 < 5] #字典也可存放任何的数据类型

4

5 #通过索引获取列表中的元素6 print(ls[3]) #输出:[6, 'dd']

7 print(ls[3][1]) #输出:'dd'

8 print(ls[::-2]) #输出:[True, 3.5, 1]

列表操作

1 name = ['妲己', '安琪拉', '嫦娥', '小乔', '周瑜']2

3 #append() 列表最后新增1个元素,仅1个参数

4 name.append('高渐离')5 print(name) #输出:['妲己', '安琪拉', '嫦娥', '小乔', '周瑜', '高渐离']

6

7 #extend() 以元组、列表的形式,可添加多个元素

8 name.extend(['甄姬', '嬴政', '武则天']) #name=['妲己', '安琪拉', '嫦娥', '小乔', '周瑜', '甄姬', '嬴政', '武则天']

9

10 #insert(index, arg) 在列表中指定位置,插入元素

11 name.insert(3, '王昭君') #name=['妲己', '安琪拉', '嫦娥', '王昭君', '小乔', '周瑜']

12

13 #reverse() 列表 倒序,无参数

14 name.reverse()15 print(name) #输出:['周瑜', '小乔', '嫦娥', '安琪拉', '妲己']

16

17 #index() 查找指定字符串并返回索引,若字符串不存在,将报错

18 print(name.index('小乔')) #输出:3

19

20 #pop(-2) 删除指定索引的元素,无参数时,默认删除列表最后一个

21 name.pop(-2) #name=['妲己', '安琪拉', '嫦娥', '周瑜']

22

23 #remove() 删除找到的第一个指定元素,没有找到要删除的元素,报错

24 name.remove('安琪拉') #输出:['妲己', '嫦娥', '小乔', '周瑜']

25

26 #count() 返回指定元素 在列表中存在的次数

27 name.count('小乔') #输出:1

28

29 #clear() 清空列表,无参数

30 name.clear() #输出:[]

31

32 #del

33 del name[1:4:2] #删除元素,可通过元素索引、切片

34 print(name) #输出:['妲己', '嫦娥', '周瑜']

35

36 del name #删除列表

列表中的切片操作

1 #索引1-3的元素,被指定字符替换

2 shooter = ['鲁班', '后羿', '孙尚香', '黄忠', '伽罗', '虞姬']3 shooter[1:4] = ['马可波罗', '狄仁杰', '李元芳', '百里守约', '成吉思汗'] #可以用元组、列表 赋值

4 print(shooter) #输出:['鲁班', '马可波罗', '狄仁杰', '李元芳', '百里守约', '成吉思汗', '伽罗', '虞姬']

5

6 shooter[1:4] = '百里守约' #用字符串 赋值

7 print(shooter) #输出:['鲁班', '百', '里', '守', '约', '伽罗', '虞姬']

copy() 复制

1 #copy() 复制列表,无参数

2 name = ['妲己', '安琪拉', '嫦娥', '小乔', '周瑜']3 name1 = name #name1 和 name 是同一个列表,id相同

4 name_copy = name.copy() #创建一个新列表name_copy,值同name, id 不同

5 print(id(name)) #输出:2034224161416

6 print(id(name1)) #输出:2034224161416

7 print(id(name_copy)) #输出:2034224161480

8

9 name[2] = '诸葛亮' #改变原列表name的值

10 print("""

11 name = {}12 name1 = {}13 name_copy = {}14 """.format(name, name1, name_copy))15

16 """

17 name 和 name1 的值,均为:['妲己', '安琪拉', '诸葛亮', '小乔', '周瑜']18 name_copy 值为:['妲己', '安琪拉', '嫦娥', '小乔', '周瑜']19 """

sort()

1 #sort() 对列表中元素(相同类型:字符串、数字),进行升序排序(ASCII)

2 num = [2, 5, 1, 7, 5.5]3 num.sort()4 print(num) #输出:[1, 2, 5, 5.5, 7]

5

6 str1 = ['d', 'D', 'a', 'F', 'G', 'f']7 str1.sort()8 print(str1) #输出:['D', 'F', 'G', 'a', 'd', 'f']

9

10 #对列表中元素类型为 元组/列表的,元组/列表中,第一个元素的类型需相同

11 club = [(7, 'a', 2, 'ss'), (6, 'x'), (0, 1, 'z')]12 club.sort()13 print(club) #输出:[(0, 1, 'z'), (6, 'x'), (7, 'a', 2, 'ss')]

14

15 #列表中的元素需为同一种类型,才能用sort()排序,否则 报错

列表中的元组,元组中的列表

1 #列表中,含有元组

2 list_tuple = ['诸葛亮', '张良', '王昭君', ('安琪拉', '妲己')]3 list_tuple[-1][0] = '甄姬' #试图 将元组元素'安琪拉',修改为‘甄姬’,程序报错

4 list_tuple[-1] = '貂蝉' #列表中的元组 只能作为一个整体被替换

5

6 #元组中的列表

7 tuple_list = ('张良', '王昭君', ['安琪拉', '妲己'])8 tuple_list[-1][0] = '高渐离' #元组中的列表,列表中的元素可被修改 ,但列表不可作为一个整体 被 替换

9 tuple_list[-1] = '周瑜' #错误操作

dict 字典

1 #定义

2 dic = {'key1':'value1', 'key2':'value2',……} #key 必须是唯一的

3

4 #tuple类型数据,可作为key

5 #list 和 dict 不能作为key

6

7 dic_name = {1: '庄周', 'key': 6, ('list', 'tuple'): ([1, 2, 'ss'], (5, 6, 'ee'))}8 print(dic_name[('list', 'tuple')]) #输出:([1, 2, 'ss'], (5, 6, 'ee'))

9

10 #hero1 = {['name', 'age']: 'ss'} # 运行会报错

1 #通过 key 获取/修改 对应的value值

2 hero = {'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子'}3

4 #获取值

5 print(hero['na1']) #输出:庄周

6 print(hero.get('na3')) #输出:孙膑

7

8 #修改值

9 hero['na2'] = '东皇太一'

10 print(hero) #输出:{'na1': '庄周', 'na2': '东皇太一', 'na3': '孙膑', 'na4': '鬼谷子'}

1 #获取字典中所有的键值对

2 print(hero.items()) #输出:dict_items([('na1', '庄周'), ('na2', '明世隐'), ('na3', '孙膑'), ('na4', '鬼谷子')])

3

4 #将获取的键值对 转化为 list

5 dict_items =list(hero.items())6

7 #通过索引获取

8 print(dict_items[1, 1]) #输出: 明世隐

1 #获取字典中所有的key

2 print(hero.keys()) #输出:dict_keys(['na1', 'na2', 'na3', 'na4'])

3

4 #获取字典中所有的value

5 print(hero.values()) #输出:dict_values(['庄周', '明世隐', '孙膑', '鬼谷子'])

6

7 #清空字典

8 hero.clear()9 print(hero) #输出:{}

10

11 #通过key 删除字典中的 key-value 值对

12 hero.pop('na1') #必须传一个参数key

13 print(hero) #输出: {'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子'}

14

15 #删除字典最后一个键值对,并返回这个键值对,无需传参

16 print(hero.popitem()) #输出:('na4': '鬼谷子')

17 print(hero) #输出:{'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑'}

18

19 #复制字典

20 hero_copy = hero.copy()

fromkeys([key, ……], '默认值')   字典重定义

1 #重定义的单个/多个key, 都是相同的默认值

2 hero_redefined = hero.fromkeys(['key1', 'key2', 'key3'], 'default_value')3 print(hero_redefined) #输出:{'key1': 'default_value', 'key2': 'default_value', 'key3': 'default_value'}

4 print(hero) #输出:{'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子'}

setdefault("key", "default_value")  为字典中单个key 赋默认值, 参数为 单个键值对,default_value 值可省略

1 #若 key 在字典中存在,则不覆盖默认值;若key在字典中不存在,则创建key,并赋初始值

2 hero.setdefault('na1', '鲁班大师')3 hero.setdefault('new_key', '蔡文姬')4 print(hero) #输出: {'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子', 'new_key': '蔡文姬'}

update(dict)  将字典参数更新到目标字典中

1 #update(dict) 参数:字典,将hero_temp字典 更新到 hero字典

2 hero_temp = {'na1': '妲己', 'na_new': '安琪拉'}3 hero.update(hero_temp)4 print(hero) #输出:{'na1': '妲己', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子', 'ne': '安琪拉'}

字典中新增键值对

1 hero['诗人'] = '李白' #新增键值对

2 print(hero) #输出:{'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子', '诗人': '李白'}

Python中 可变类型 与 不可变类型

1 #元组 字符串 是不可变类型

2 tup = ('s1', 's2')3 tup = tup.__add__(('s3', 's4')) #tup 元组 新增 元素,类似于 两个字符串拼接,赋值于另一个变量,元组的地址被改变

4 print(tup) #输出:('s1', 's2', 's3', 's4')

5

6 tup[0] = 's0' #运行报错,因为:元组不可被改变,通过索引 修改 元组元素的值,是不可以的

7

8 str1 = 's3 sunday'

9 print(id(str1)) #输出:2444818405680

10 str1 = 'ss' #修改字符串str1标签的指向地址

11 print(id(str1)) #a 指向的地址改变了, 输出:2444818412744

1 #列表 字典 是可变类型,可修改列表、字典的元素,地址id不会变

2 ls = [1, 'ss', 3.5, [6, 'dd'], 4 < 5]3 print(id(ls)) #输出:2674034238152

4 ls[1] = 5 #修改列表元素

5 print(id(ls)) #输出:2674034238152

6 print(ls) #输出:[1, 5, 3.5, [6, 'dd'], True]

字符串 和 列表的区别

1 name = 'Lucy'

2 name.replace('u', 'an')3 print(name) #输出:Lucy

4 re_name = name.replace('u', 'an')5 print(re_name) #输出:Lancy

1 str1 = "lucy"

2 str1[1:3] = 'a' #报错 TypeError: 'str' object does not support item assignment

类型判断 isinstance()

1 #isinstance(object, type) 类型判断,输出结果:True, False

2 int_num = 8

3 print(isinstance(int_num, int)) #判断int_num 类型是否为 int类型,输出:True

4 print(isinstance(int_num, float)) #输出:False

all() 判断元组、列表、集合中,是否存在元素的值为假(即:'', None, 0),是则返回False,否则返回True

1 #all(object)

2 tuple_a = (1, 2, 'we', 'are')3 tuple_b =()4

5 list_a = [1, 2, '', 'are'] #list_a = [1, 2, None, 'are']

6 list_b =[]7

8 set_a = {1, 0, 'we', 'are'}9 set_b ={}10

11 print("""

12 tuple_a:{}13 list_a:{}14 set_a:{}15 """.format(all(tuple_a), all(list_a), all(set_a)))16

17 print("*"*10, """空元组、空列表、空集合,返回Ture18 tuple_b:{}19 list_b:{}20 set_b:{}21 """.format(all(tuple_b), all(list_b), all(set_b)))22

23 # 输出:24 tuple_a:True25 list_a:False26 set_a:False27

28 ********** 空元组、空列表、空集合,返回Ture29 tuple_b:True30 list_b:True31 set_b:True32

any() 判断元组、列表、集合中,是否所有的元素值都为假(即:'', None, 0),是则返回False, 否则返回True

1 #any(object)

2 tuple_a = (4, None, 'ss', 0, '')3 tuple_b =()4

5 list_a = ['', 0, None]6 list_b =[]7

8 set_a = {4, 'ss', None}9 set_b ={}10 print('''

11 tuple_a : {}12 list_a : {}13 set_a : {}14 '''.format(any(tuple_a), any(list_a), any(set_a)))15

16 print('*'*10, '''空元组、空列表、空集合,返回False17 tuple_b : {}18 list_b : {}19 set_b : {}20 '''.format(any(tuple_b), any(list_b), any(set_b)))21

22 # 输出:23 tuple_a : True24 list_a : False25 set_a : True26

27 ********** 空元组、空列表、空集合,返回False28 tuple_b : False29 list_b : False30 set_b : False31

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值