python基础-数据类型

1. 列表

列表是一个可变序列,并且能同时存放不同类型的元素,其中,列表推导可以帮助我们把一个序列或者是其他可迭代类型中的元素过滤或者是加工,然后再新建一个列表。例如:

>>> symbols = "abcde"
>>> code = [ord(symbol) for symbol in symbols]
>>> code
[97, 98, 99, 100, 101]

虽然可以按照列表推导来初始化元祖、数组或其他序列类型,但是生成器表达式是更好的选择,因为生成器表达式背后遵守了迭代器协议,可以逐个地产生元素,而不是先建一个完整的列表,然后再把这个列表传递到某个构造函数中。生成器表达式的语法跟类别差不多,只不过把方括号换成圆括号而已。

1.1 列表方法

  • list.append(x): 在尾部添加一个新的元素,等价于 a[len(a):] = [x];

  • list.extend(iterable): 把可迭代对象iterable追加给list;

  • list.insert(i,x): 在list位置i之前插入元素x;

  • list.remove(x): 删除list中第一次出现的x,若list中没有x,会抛出ValueError的异常;

  • list.clear(): 清空list中所有的元素;

  • list.pop(i): 删除第i个位置的值,若无i值,删除最后的元素,并返回它的值;

  • list.count(x): 返回x在list中出现的次数;

  • list.sort():对列表进行排序

    1. list.sort方法排序列表,不会把原列表复制一份,这也是这个方法的返回值是None的原因。在python中遵循一个惯例:如果一个函数或者方法对对象进行的是就地改动,那它应该返回None,好让调用者知道传入的参数发生了变动,而且并未产生新的对象。
    2. 与list.sort方法不同,内置函数sorted,会新建一个列表作为返回值。

1.2 利用列表作为栈

栈的特点是后进先出,在添加元素时,可以调用list.append(),在调出元素时,可以使用list.pop(), 例如:

>>> stack = [3,4,5]
>>> stack.append(6)
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack
[3, 4, 5]

1.3 利用列表作为队列

示例:

>>> from collections import deque
>>> queue = deque([1, 2, 3])
>>> queue.append(4)
>>> queue
deque([1, 2, 3, 4])
>>> queue.popleft()
1
>>> queue
deque([2, 3, 4])
>>> 

2. 元组

元组除了用作不可变的列表,还可以用于没有字段名的记录。例如:

>>> city, year, pop, chg, area = ('Tokyo', 2003, 32450, 0.66,8014)
>>> city
'Tokyo'

元组中的每个元素都存放了记录中一个字段的数据,外加这个字段的位置。

2.1 元组拆包

元组拆包形式是平衡赋值,也就是说把一个可迭代对象里的元素,一并赋值到由对应的变量组成的元组中,可以用*处理剩下的元素,例如:

>>> a,b,*rest = range(5)
>>> a,b,rest
(0, 1, [2, 3, 4])

*前缀只能用在一个变量名前面,但是这个变量可以出现在赋值表达式的任意位置,例如:

>>> *head, b, c, d = range(5)
>>> head,b,c,d
([0, 1], 2, 3, 4)

2.2 具名元组

collections.namedtuple是一个工厂函数,可以用来构建一个带字段名的元组和一个有名字的类,例如:

>>> from collections import namedtuple
>>> city = namedtuple('City','name country population coordinates')
>>> tokyo = city("Tokyo", 'JP', 36.33, (35.689722, 139,691667))
>>> tokyo
City(name='Tokyo', country='JP', population=36.33, coordinates=(35.689722, 139, 691667))

3. 字典

python对字典的实现做了高度的优化,散列表是字典类型性能出众的根本原因。

3.1 构造方法

字典提供了很多的构造方法,如下:

>>> a = dict(one=1, two=2, three=3)
>>> b = {'one':1, 'two':2, 'three':3}
>>> c = dict(zip(['one', 'two', 'three'],[1,2,3]))
>>> d = dict({'one':1,'three':3,'two':2})
>>> e = dict([('one',1),('two',2),('three',3)])
>>> a == b == c == d == e
True

3.2 用setdefult处理找不到的值

当字典d[k]不能找到正确的键时,python会抛出异常,可以用d.get(k, default)来代替d[k],

但是要更新某个键对应的值时,不管使用__getitem__还是get都会不自然,而且效率低,可以使用dict.setdefault,例如:

my_dict.setdefault(key,[]).append(new_value)

等价于

if key not in my_dict:
   my_dict[key] = []
my_dict[key].append(new_value)

3.3 字典遍历

通过调用dict.items()可以获取dict的key和value,例如:

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k,v in knights.items():
...     print(k,v)
... 
gallahad the pure
robin the brave

4. 集合

集合的本质是许多唯一对象的集合。因此集合可以用于去重,例如:

>>> l = ['spam', 'spam', 'eggs', 'spam']
>>> set(l)
{'spam', 'eggs'}
>>> list(set(l))
['spam', 'eggs']

集合中的元素必须是可散列的,set类型本身是不可散列的

可散列的:原子不可变数据类型,例如,str、byte和数字类型

  • 集合实现了很多基础的中缀运算符,给定两个集合a和b, a | b 返回合集, a & b 返回交集, a - b返回差集;

  • 除了空集set(),集合的字符串表达形式总是以{…}的形式出现,例如:

    >>> s = {1}
    >>> type(s)
    <class 'set'>
    >>> s
    {1}
    >>> s.pop()
    1
    >>> s
    set()
    

参考:

[1] 《流畅的Python》 Luciano Ramalho著 安道 吴珂译 人民邮电出版社

[2] https://docs.python.org/3/tutorial/datastructures.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python基础语法数据类型包括数字、字符串、列表、元组、集合和字典。 1.数字:Python支持三种不同的数字类型:整型、浮点型和复数。其中,整型是指整数,浮点型是指带有小数点的数字,复数是由实数部分和虚数部分构成的数字。 2.字符串:字符串是Python中最常用的数据类型之一,用于表示文本。可以使用单引号或双引号来创建字符串。 3.列表:列表是Python中最常用的数据结构之一,用于存储一组有序的元素。列表中的元素可以是不同的数据类型包括数字、字符串、列表等。 4.元组:元组与列表类似,也是用于存储一组有序的元素。不同之处在于,元组是不可变的,即不能修改元组中的元素。 5.集合:集合是Python中用于存储一组唯一元素的数据类型。集合中的元素是无序的,且不能重复。 6.字典:字典是Python中另一个常用的数据结构,用于存储一组键值对。字典中的键必须是唯一的,而值可以是任意数据类型。 下面是一个例子,展示了如何创建和使用Python中的各种数据类型: ```python # 整型 x = 10 print(type(x)) # 输出:<class 'int'> # 浮点型 y = 3.14 print(type(y)) # 输出:<class 'float'> # 复数 z = 2 + 3j print(type(z)) # 输出:<class 'complex'> # 字符串 s = "Hello, world!" print(type(s)) # 输出:<class 'str'> # 列表 lst = [1, 2, 3, "four", 5.0] print(type(lst)) # 输出:<class 'list'> # 元组 tup = (1, 2, 3, "four", 5.0) print(type(tup)) # 输出:<class 'tuple'> # 集合 s = {1, 2, 3, 4, 5} print(type(s)) # 输出:<class 'set'> # 字典 d = {"name": "Alice", "age": 25, "city": "New York"} print(type(d)) # 输出:<class 'dict'> ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值