Python3-2020-测试开发-7- 元组tuple

一、元组的特点

"""元组的总结:"""
'''
元组的核心特点:不可变序列
元组的访问和处理速度要比列表快
与整数和字符串一样,元组可作为字典的键,列表永远不可以作为字典的键使用
'''

 

二、元组的创建

2.1 普通创建

# 1. 普通创建
a1 = (10,20,30)
print(type(a1))    # <class 'tuple'>
print(a1)          # (10, 20, 30)

a2 = 10,20,30
print(type(a2))    # <class 'tuple'>
print(a2)          # (10, 20, 30)

a3 = (20)
a4 = (30,)
a5 = 40,
print(type(a3))   # <class 'int'>
print(type(a4))   # <class 'tuple'>
print(type(a5))   # <class 'tuple'>

2.2 通过tuple创建元组

# 2. 通过tuple创建元组
b1 = tuple("abcd")
print(b1)                      # ('a', 'b', 'c', 'd')
b2 = tuple(range(3))
print(b2)                      # (0, 1, 2)
b3 = tuple([11,22,33,44])
print(b3)                      # (11, 22, 33, 44)

三、元组的访问

3.1 元组的访问

# 3.1 元组的访问
c1 = (20,10,30,40)
# 3.1 直接访问
print(c1[1]) # 10
# 切片
print(c1[1:3]) # (10, 30)
# 排序
print(c1[::-1])  # (40, 30, 10, 20)
# sorted()    list.sort()是修改原列表的对象,故tuple没有sort方法,
# sorted(tuple)是将tuple转化成有序列表
print(sorted(c1))  # [10, 20, 30, 40]

3.2 zip()方法

# 3.2 zip() 将多个列表对应位置的元素合并成为元组,并返回给这个zip对象

x = [10,20,30,40]
y = [11,22,33,44]
z = [100,200,300,400]

m = zip(x,y,z)
print(m)
print(list(m))


#输出:



"""
<zip object at 0x0000027B8A680108>
[(10, 11, 100), (20, 22, 200), (30, 33, 300), (40, 44, 400)]
"""

3.3 生成器推导式创建元组

'''
3.3. 生成器推导式创建元组
生成器推导式与列表推导式类似,只是生成器推导式使用小括号,
列表推导式直接生成列表对象,生成器推导式生成的不是列表也不是元组,
而是一个生成器对象,我们可以通过生成器对象,转化成为列表或元组,也可以使用生成器对象的__next__()
方法进行遍历,或者直接作为迭代器来使用,不管用什么元素,元素访问结束后,如果需要重新访问其中的元素,必须重新创建该生成器对象
'''
s = (x*2 for x in range(5))

print(s)

print(tuple(s))
print(list(s))    # 元素只能访问一次,第二次访问时就为空了,需要再次生成一次

s = (x*2 for x in range(5))
print(list(s))

s1 = (x*2 for x in range(5))
print(s1.__next__())   # 0
print(s1.__next__())   # 2
print(s1.__next__())   # 4
print(s1.__next__())   # 6
print(s1.__next__())   # 8
print(s1.__next__())   # 异常 : StopIteration


"""
<generator object <genexpr> at 0x000001CBF27115C8>
(0, 2, 4, 6, 8)
[]
[0, 2, 4, 6, 8]
0
2
4
6
8
"""

 

posted @ 2020-05-06 15:14  旅行没有终点  阅读(174)  评论(0编辑  收藏  举报