#数据类型
"""
list 可变序列 ,可添加,删除,修改,切片,拼接,重复
tuple 不可变序列, 可切片,拼接,重复
range 不可变序列, 以x开始,y结束,s步长,定义一个序列
dict 称映射,字典或散列。可变,无序,有索引的集合,键只能是 字符串,数字或元祖,必须唯一;值可以是任意类型。 {}
set 可变的、无序的、无索引的集合,可以用花括号{}或者set()函数创建,可以添加、删除或修改元素,也可以进行交集、并集、差集等数学运算
frozenset 冻结的set,所以不可变,无序,无索引,不可添加,删除,修改。可以交集,并集,差集
bytes
bytearray
memoryview
"""
# 序列 list tuple range=======================================================================================
"""
list是一个可变序列,可以用方括号[]或者list()函数创建,可以添加、删除或修改元素,也可以进行切片、拼接、重复等操作。list的方法有append(), extend(), insert(), remove(), pop(), sort(), reverse(), count(), index()等12。
tuple是一个不可变序列,可以用圆括号()或者tuple()函数创建,不能添加、删除或修改元素,但可以进行切片、拼接、重复等操作。tuple的方法有count()和index()12。
range是一个不可变序列,可以用range()函数创建,表示一个整数序列,通常用于循环中。range的参数有start, stop和step,分别表示起始值、终止值(不包含)和步长。range的方法有count()和index()
"""
# 创建一个list
lst = [1, 2, 3, 4]
# 添加一个元素
lst.append(5)
# 输出结果
print(lst) # [1, 2, 3, 4, 5]
# 创建一个tuple
tup = (1, 2, 3, 4)
# 尝试修改一个元素
# tup[0] = 5 # TypeError: 'tuple' object does not support item assignment
# 输出结果
print(tup) # 报错
# 创建一个range
rng = range(1, 10, 2)
# 输出结果
print(list(rng)) # [1, 3, 5, 7, 9]
#===========================================================映射 dict(字典,散列)===========================================
"""
dict 映射,又称字典,散列
dict 可变,无序,有索引的集合
dict 键只能是 字符串,数字或元祖,必须唯一;值可以是任意类型
"""
person = {'name':'peter.xiu','age':35,'country':'china'}
print(person)
print(type(person))
_name = person['name']
_age = person['age']
print(_name,_age)
person['country'] = 'USA'
print(person['country'])
person['size'] = 60
print(person['size'])
person.pop('country')
print(person)
person_copy = person.copy()
print(person_copy)
person.clear()
print(person)
#===================================================集合类型 set, frozenset==============================================
"""
set是一个可变的、无序的、无索引的集合,可以用花括号{}或者set()函数创建,可以添加、删除或修改元素,也可以进行交集、并集、差集等数学运算。set的方法有add(), remove(), discard(), pop(), update(), difference(), intersection(), union()等123。
frozenset是一个不可变的、无序的、无索引的集合,可以用frozenset()函数创建,不能添加、删除或修改元素,但可以进行交集、并集、差集等数学运算。frozenset相当于一个冻结的集合,可以作为字典的键或其他集合的元素423。
set和frozenset的应用场景有:去除重复元素,检查元素是否存在,实现集合运算等
"""
person = {'peter.xiu','35','china'}
print(person)
body = {1,2,3.45,5}
print(body)
#======================================================二进制类型:bytes, bytearray, memoryview===========================
"""
区别和场景
bytes 不可变
bytearray 可变
memoryview 引用二进制数据
"""
x = b'abc'
print(x)
barr = bytearray(123)
print(barr)
#=================================================================字符串补充===============================================
#转义字符
print('c:\some\name') #\n被解释为换行
#不需要转义,前面加r
print(r'c:\name\some')
print("""
这里是一段文字
有格式的文字
""")
"""
+字符串连接符
* 重复符号
"""
print(3*'peter.xiu ')
#相邻的字符串自动连接
print('wang' 'peter.xiu')
##字符串,索引访问,提取单个字符
text = 'peter.xiu learn python'
print(text[0])
print(text[-1])
print(text[9])
#切片,提取字符串
print(text[0:2])
print(text[:2]) #省略默认0
print(text[3:]) #省略默认等于字符串长度
print(text[3:1000000]) #超长等于,字符串长度
print(text[-32222222222222222:1000000]) #超长等于,字符串长度
#python字符串,是immutable(不可改变的)
# text[0] = 't' #这个会报错
#================================================list======================================================
list = [1,2,3,4,5,6,78]
print(list)
#切片
print(list[3:])
#合并
_add_list = list + [999,456]
print(_add_list)
#浅拷贝
copy_list = list[:]
print(copy_list)
#is mutable,是可变的
list[1] = 22222
print(list)
#append 列表结尾最佳
list.append(22222)
print(list)
#7的三次方 7*7*7 =================================================================幂运算==============================
print(7**3)
list.append(2**2)
print(list)
#切片赋值
list[2:3] = [111]
print(list)
list[2:3] = []
print(list)
list[:] = []
print(list)
#长度
member = ['peter','wang','jun','tian','yan']
len = len(member);
print(len)
#嵌套列表,多维列表
classlist = ['c1','c2','c3'];
school = ['t1','t2',classlist]
print(school)
print(school[2:])
print(school[2:][0][:])
#斐波那契数列 斐波那契数列是一个数学上的数列,它的每一项都是前两项的和
def fbnqsl(n):
a,b = 0,1
result = []
for i in range(n):
result.append(a)
a,b = b,a+b
return result
print(fbnqsl(10))