Python基础学习
时间2020-2-16
2、元组tuple:
类似于java中的数组
指有一定相关性的元素的集合
1. 定义元组:
a = (1, '2', 'a', 3.14, 1, 1, 1, 1, 1,)
print(a)
#(1, '2', 'a', 3.14, 1, 1, 1, 1, 1)
注:若元组中只有一个值值后要加上英文状态下的, ,否则括号会被视为运算符
a = (1)
print(type(a))
b = (1,)
print(type(b))
#<class 'int'>
<class 'tuple'>
可以看到a并不是tuple类型
2.不能动态追加元素:
每一个单独的项称为一个元组
元组的值不可改变
a = (1, '2', 'a', 3.14, 1, 1, 1, 1, 1,)
a[0] = 10
print(a)
#TypeError: 'tuple' object does not support item assignment
b = (1, 23, 4, 325, 2346, 123, 123)
print(a+b)
#(1, '2', 'a', 3.14, 1, 1, 1, 1, 1, 1, 23, 4, 325, 2346, 123, 123)
a+b的操作并不是将b追加在a的后面由下地址空间可知三个值在内存地址中的位置不同
print(id(a))
print(id(b))
print(id(a+b))
#2759592478664
#2759590476824
#2759592489208
实际的操作是:
a开辟属于自己的内存空间
b开辟属于自己的内存空间
a+b开辟新的内存空间按先a后b的顺序将值放入新的内存空间里
3.切片:
与字符串切片相同
见:Python学习(4)基础
# print(a[0])
# print(a[1:4])
# print(a[::2])
# print(a[::-1])
4.对元组进行操作:
(1)复制
a1 = copy.copy(a)
print(a)
print(a1)
#(1, '2', 'a', 3.14, 1, 1, 1, 1, 1)
#(1, '2', 'a', 3.14, 1, 1, 1, 1, 1)
print(id(a))
print(id(a1))
#2243302361032
#2243302361032
可以看到a1和a的内存地址相同,所以这是个浅复制,只复制了值的内存地址;深复制则是要改变内存地址
—————————————————————我是分割线————————————————————
浅复制 :只复制了内存地址
深复制:改变内存空间
5.元组的内置函数及方法:
# print(len(a))
# print(a.count(1)) # 统计个数
# print(a.index(1)) # 第一次出现下标
# print(sorted(b)) # 排序
# reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。