第一章Python数据结构和算法(一)

Python 提供了大量的内置数据结构,包括列表,集合以及字典。大多数情况下使用这些数据结构是很简单的。但是,我们也会经常碰到到诸如查询,排序和过滤等等这些普遍存在的问题。因此,这一章的目的就是讨论这些比较常见的问题和算法。另外,我们也会给出在集合模块 collections 当中操作这些数据结构的方法。

1.1将序列分解为单独的变量

问题

        现有一个包含N个元素的元祖或者序列,怎样将它里面的值解压后同时赋给N个变量?

解决方案

       任何的序列(或者是可迭代对象)可以通过一个简单的赋值操作来分解为单独的变量。唯一的要求就是变量的总数和结构必须与序列相吻合。

代码示例:

p = (4, 2)
x, y = p
print(x)
# 4
data = ['Jack', 30, 2.14, (2020, 12, 8)]
name, age, height, date = data
print(name)
# 'Jack'
print(date)
# (2020, 12, 8)

name, age, height, (year, mon, day) = data
print(age)
# 30
print(year)
# 2020

  

如果元素的数量不匹配,会得到一个错误提示。

代码示例:

p=(4,5)
x,y,z=p
# Traceback (most recent call last):
#   File "E:/day01_1.py", line 2, in <module>
#     x,y,z=p
# ValueError: not enough values to unpack (expected 3, got 2)

  

讨论

        不仅仅只是元组或列表,只要对象是可迭代的,就可以执行分解操作。包括字符串,文件对象,迭代器和生成器。

        代码示例:

s='Hello'
a,b,c,d,e=s
print(a)
#'H'
print(d)
#'l'

  

有时候,你可能只想解压一部分,丢弃其他的值。对于这种情况 Python 并没有提供特殊的语法。但是你可以使用任意变量名去占位,到时候丢掉这些变量就行了。


代码示例:

data=['Jack',30,2.14,(2020,12,8)]
_,age,height,_=data
print(age)
#30
print(_)
#(2020, 12, 8)

  你必须保证你选用的那些占位变量名在其他地方没被使用到。

posted @ 2020-12-08 17:40  wangshanglinju  阅读(39)  评论(0编辑  收藏  举报