1-03 Python 基本数据类型

1.3 数据类型

除了上节所介绍的比较简单的数据类型,Python 中可以通过组合一些值,来得到多种复合数据类型。其中最常用的是列表 (list)、字典 (dictionary)、元组 (tuple)。

列表 (list) 介绍

列表 是 Python 中使用最频繁的数据类型。

  • Python 的列表如同 Perl 中的数组,在 Python 中,变量可以任意取名,并且 Python 在内部会记录下其数据类型。
  • Python 的列表更像 Java 中的数组,一个更好的类比是 ArrayList 类,它可以保存任意对象,并且可以在增加新元素时动态扩展。
  • 可以通过方括号括起、逗号分隔的一组值(元素)得到列表,一个列表可以包含不同类型的元素,但通常使用时各个元素类型相同。
  • 列表也支持索引和切片。
>>> list1 = [1, 4, 9, 16, "Hello"]
>>> list1
[1, 4, 9, 16, 'Hello']
>>> list1[0] 
1
>>> list1[-3:]
[9, 16, 'Hello']

根据 Python 官方说明,所有的切片操作都返回一个新列表,这个新列表包含所需要的元素,这个新列表是一个新的浅拷贝。此外根据刚才的操作,与不可修改 (immutable) 的字符串不同, 列表是一个 可修改 (mutable) 类型,就是说,它自己的内容可以改变。

>>> list1 = [1, 4, 9, 16, 25]
>>> list2 = list1[:] # 浅拷贝
>>> list3 = list1 # 赋值
>>> print(id(list1),id(list2), id(list3))
2079473658304 2079473657856 2079473658304
>>> list2[0] = 30

列表常用的操作

  • append(obj):来添加新元素。
  • extend(obj):扩展新元素。
  • remove(obj):移除列表中某个值的第一匹配项。
  • insert(index, obj):用于将指定对象插入列表的指定位置。
  • pop(index): 要移除列表中对下标对应的元素。
  • sort():对列表进行排序。
  • reverse():反向列表中元素。
>>> list1 = [1, 4, 9, 16, 25]
>>> list1.append([1,3,5])
>>> list1
[1, 4, 9, 16, 25, [1, 3, 5]]
>>> list1.extend([1,3,5]) # 会将数组展开为一串数字
>>> list1
[1, 4, 9, 16, 25, [1, 3, 5], 1, 3, 5]
>>> list1.remove([1,3,5])
>>> list1
[1, 4, 9, 16, 25, 1, 3, 5]
>>> list1 = list1[:5]
>>> list1.insert(1,4)
>>> list1
[1, 4, 4, 9, 16, 25]
>>> list1.pop(1)
4
>>> list1
[1, 9, 16, 25, 36]
>>> list1.reverse()
>>> list1
[36, 25, 16, 9, 1]
>>> list1.sort()
>>> list1
[1, 9, 16, 25, 36]

字典 (Dictionary) 介绍

字典是 Python 的内置数据类型之一,它定义了键和值之间一对一的关系。

  • Python 中的字典像 Perl 中的 hash (哈希数组)。
  • Python 中的字典像 Java 中的 Hashtable 类的实例。
  • Python 中的字典像 Visual Basic 中的 Scripting.Dictionary 对象的实例。
  • 每一个元素都是一个键和值对 (key-value pair),整个元素集合用大括号括起来。
  • 可以通过键来引用其值,使用方括号,但是不能通过值获取键。
  • 字典的键是大小写敏感的
>>> # 字典有三种赋值方法蓊
>>> dic = {"program":"Python", "database":"mysql"}
>>> dic = dict(program = "Python", database = "mysql")
>>> dic = dict([("program","Python"), ("database","mysql")])
>>> dic
{'program': 'Python', 'database': 'mysql'}
>>> dic["program"]
'Python'
>>> dic["Python"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Python'   
>>> dic["Program"] = "Java"
>>> dic
{'program': 'Python', 'database': 'mysql', 'Program': 'Java'}

字典的常用操作

  • copy():拷贝数据(浅拷贝)。
  • keys():取得所有键。
  • values():取得所有值。
  • items():取得所有元素。
  • clear():清空字典内元素。
  • del()内建函数:可以删除特定元素或整个字典。
>>> dic = {"program":"Python", "database":"mysql"}
>>> dic2 = dic.copy()
>>> print(id(dic),id(dic2))
2079473853760 2079468906240
>>> dic.keys()
dict_keys(['program', 'database'])
>>> dic.values()
dict_values(['Python', 'mysql'])
>>> dic.items()
dict_items([('program', 'Python'), ('database', 'mysql')])
>>> del(dic["program"])
>>> dic
{'database': 'mysql'}
>>> dic.clear()
>>> dic
{}

元组 (Tuple) 介绍

  • 元组是不可变的列表。一旦创建了一个元组,就不能以任何方式改变它。
  • 定义元组与定义列表的方式相同,但整个元素集是用小括号包围的,而不是方括号。
  • 元组的元素与列表一样按定义的次序进行排序。元组的索引与列表一样从 0 开始,所以一个非空元组的第一个元素总是 t[0]。
  • 负数索引与列表一样从元组的尾部开始计数。
  • 与列表一样分片 (slice) 也可以使用,当分割一个元组时,会得到一个新的元组。
  • 元组可以转换成列表,反之亦然。
  • 元组没有方法可以操作。
>>> t = (1, "mysql", "Python")
>>> t
(1, 'mysql', 'Python')
>>> t[0]
1
>>> t[-1]
'Python'
>>> t[1:3]
('mysql', 'Python')

那么使用元组有什么好处呢?

  • 元组比列表操作速度快。如果您定义了一个值的常量集,并且唯一要用它做的是不断地遍历它,请使用元组代替列表。
  • 如果对不需要修改的数据进行 “写保护”,可以使代码更安全,说明这一数据是常量。
  • 字典的键可以是字符串,整数、字串符或是元组。元组可以在字典中被用做键,但是列表不行。
  • 元组可以用在字符串格式化中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值