python元组及其周边

一、元组的创建

1、用都好分割,切记()不是必须

2、用tuple()创建。内接字符串、列表、元组,将会创建一个包含序列内元素的元组。但是要是接一个字典的话,那么tuple只认识字典的键,这一点切记。


二、元组其实和列表很像,都是用整数值作为索引,但是最大的不同之处,便是元组是不可变的,而列表是可变的。


三、元组的赋值

与传统需要中间变量不同,元组赋值一气呵成:

a,b = b,a

这样便能改变两者的值


四、元组作为返回值

理论上返回值只能有一个,但是元组介入的话,那就不仅仅只有一个了。


五、可变长度参数元组

比如一个函数的形参不是固定的个数的话,就可以使用元组的形式。函数可以接受可变数量的参数。 以 “*” 开头的形参将输入的参数 汇集 到一个元组中。

def printall(*args):
    print(args)
相当于args是一个元组,当然你可以随意命名元组的名字,但是一般用args。

这里的定义为 汇集,当然还有拆分。

比如divmod这个函数,接受两个变量,返回值为这两个书的商和余数。(你可以依次赋值给两个变量,或者仅仅赋值给一个变量,此时这个变量为一个元组)

>>> t = (7, 3)
>>> divmod(t)
TypeError: divmod expected 2 arguments, got 1

此时怎么办,还是用到*这个玩意儿。

>>> divmod(*t)

(2, 1)

总结五,只有元组才有可变参数长度的功能吧。此时无论是汇集还是拆分都得用到*呢,切记。

典型的可变参数长度的函数有 max() min(),但是sum()不是。你试试便知。


六、列表和元组

zip是一个内建函数,可以接受将两个或多个序列组,并返回一个元组列表, 其中每个元组包含了各个序列中相对位置的一个元素。如果各个序列长度不一,以最短的为准。且这个zip对象是一个可迭代的对象。

说到这里,其实迭代器和列表也是很像,只不过你不能通过整数值去访问迭代对象的值。

所以按照常理来说,迭代器转化为列表也很容易

list(zip(list1,tuple2))

最精彩的来了:

对于元组列表,你可以使用元组赋值来循环

t = [('a', 0), ('b', 1), ('c', 2)]
for letter, number in t:
    print(number, letter)

如果将 zip 、for 循环和元组赋值结合起来使用,你会得到一个可以同时遍历两个(甚至多个)序列的惯用法。 例如,has_match 接受两个序列 t1 和 t2 , 如果存在索引 i 让 t1[i] == t2[i],则返回 True :

def has_match(t1, t2):
    for x, y in zip(t1, t2):
        if x == y:
            return True
    return False

如果需要遍历一个序列的元素以及其索引号,您可以使用内建函数 enumerate :

for index, element in enumerate('abc'):
    print(index, element)

enumerate的返回结果是一个枚举对象(enumerate object),可迭代一个包含若干个的序列; 每个对包含了(从0开始计数)的索引和给定序列中的对应元素。 在这个例子中,输出结果是:

0 a
1 b
2 c

和前一个示例的结果一样。



七、字典和元组

关键方法为items。它是字典的一个方法,返回多个元组组成的序列,其中每个元组的元素为一个键值对。和上面的zip后类似,它也是一个迭代器,可以利用元组来进行赋值。

>>> for key, value in d.items():
...     print(key, value)
...
c 2
a 0
b 1

下面一句话,将列表、字典和元组结合起来使用:

你可以讲元组列表很容易变成字典。

>>> t = [('a', 0), ('c', 2), ('b', 1)]
>>> d = dict(t)
>>> d
{'a': 0, 'c': 2, 'b': 1}

所以用zip和dict很容易便会生成一个字典

>>> d = dict(zip('abc', range(3)))
>>> d
{'a': 0, 'c': 2, 'b': 1}

在字典中使用元组作为键(主要因为无法使用列表)的做法很常见。 例如,一个电话簿可能会基于用户的姓-名对,来映射至号码。 假设我们已经定义了 last 、 first 和 number 三个变量, 我们可以这样实现映射:

directory[last, first] = number

方括号中的表达式是一个元组。我们可以通过元组赋值来遍历这个字典:

for last, first in directory:
    print(first, last, directory[last,first])











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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值