python 数据类型(tuple)

什么是元组?

        元组是处理一组有序项目的数据结构
        元组和字符串一样是不可变的 , 即你不能修改元组
        元组可以包含任何类型的对象:字符串、数字甚至其他列表
        适应场景:性别选择,数据库的查询结果

元组通过圆括号中用逗号分割的项目定义
只有一个元素,需要在元素后面加逗号

# 定义空元组
>>> tu1 = ()
>>> type(tu1)
<class 'tuple'>

>>> tu2 = tuple()
>>> tu2
()

>>> tu2 = tuple([1,2,3])
>>> tu2
(1, 2, 3)

>>> dir(tu2)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
>>> tu2.index(3)
2
>>> tu2.count(3)
1


>>> tu3 = (1)
>>> type(tu3)
<class 'int'>

>>> tu3 = (1,)
>>> type(tu3)
<class 'tuple'>

元素里面包列表,列表里的元素是可以改变的。
因为列表是可变数据类型,更改里面的元素不会改变列表本身

>>> tu = ("a",[1,2])
>>> tu[1]
[1, 2]
>>> tu[1].append(3)
>>> tu
('a', [1, 2, 3])


>>> a =(1,2)
>>> a,b = (1,2)
>>> a
1
>>> b
2

切片

切片是通过下标访问元组中的元素,切片可以取出一个子元组
格式:
    sample[start:end:step]
起止区间:[ start, end )
step: 默认=> 1
start: 默认=> step为正时,start为0;step为负时, start为-1
end: 默认=> step为正时,end为元组结尾;step为负时, end为元组开始
注意:三个值都为选填项

>>> tu1 = ('apple','b','c',1,1.10,False)
>>> tu1[0:3]
('apple', 'b', 'c')
>>> tu1[0:7:2]
('apple', 'c', 1.1)
>>> tu1[1:]
('b', 'c', 1, 1.1, False)
>>> tu1[::]
('apple', 'b', 'c', 1, 1.1, False)

>>> tu1[-4:-1]
('c', 1, 1.1)
>>> tu1[-1:-4]
()
>>> tu1[-1:-4:-1]
(False, 1.1, 1)
>>> tu1[6:0:-2]
(False, 1, 'b')
>>> tu1[::-1]
(False, 1.1, 1, 'c', 'b', 'apple')

切片函数(slice函数)

用途:生成一个slice对象,相当于可以给要切的内容取个名字

>>> tu1
('apple', 'b', 'c', 1, 1.1, False)
>>> a = slice(0,3)
>>> a
slice(0, 3, None)
>>> type(a)
<class 'slice'>
>>> tu1[a]
('apple', 'b', 'c')

元组的不可变性

>>> tu1
('apple', 'b', 'c', 1, 1.1, False)
>>> tu1[0] = 'a'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

统计

>>> tu1
('apple', 'b', 'c', 1, 1.1, False)
>>> len(tu1)
6
>>> tu1.index('b')
1
>>> tu1.count(1)
1
>>> 

遍历元组

>>> tu1
('apple', 'b', 'c', 1, 1.1, False)
>>> for i in enumerate(tu1):
...     print(i)
... 
(0, 'apple')
(1, 'b')
(2, 'c')
(3, 1)
(4, 1.1)
(5, False)

成员关系

>>> 'a' in tu1
False
>>> 'b' in tu1
True

>>> 'a' not in tu1
True
>>> 'b' not in tu1
False

列表和元组的区别

相同点
    序列的两个主要特点是索引操作符和切片操作符
    索引操作符让我们可以从序列中抓取一个特定项目。
    切片操作符让我们能够获取序列的一个切片,即一部分序列。
不同点
    list: 可变对象
    tuple: 不可变对象,不能增加修改删除
    tuple中嵌套list时,list是可修改的

list和tuple的相互转换

>>> tu1
('apple', 'b', 'c', 1, 1.1, False)
>>> list(tu1)
['apple', 'b', 'c', 1, 1.1, False]
>>> tuple(list(tu1))
('apple', 'b', 'c', 1, 1.1, False)

小练习

print("欢迎使用用户检测系统")
user_lst = [('root', '123456'), ('admin', '123123')]
username = input("请输入用户名:")
passwd = input("请输入密码:")
if username == 'root' and passwd == '123456':
    print("success login")
elif username == 'admin' and passwd == '123123':
    print("success login")
else:
    print("fail login")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩未零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值