一、数据结构和序列
1.1元组,tuple,()
#元组
t1=()
print(type(t1))
'''
<class 'tuple'>
'''
t2=(1)
print(type(t2))
'''
<class 'int'>
'''
t3=('1')
print(type(t3))
'''
<class 'str'>
'''
t4=(1,)
print(type(t4))
'''
<class 'tuple'>
'''
t5=(1,2)
print(type(t5))
'''
<class 'tuple'>
'''
#1.针对元组的元素,只有1个的时候,需在括号里面的数据后,添加逗号;
#2.当元组的元素超过两个数据时,无需另添加逗号;
import random
list1=[]
for i in range(9):
ran=random.randint(1,20)
list1.append(ran)
print(list1)
'''
[4, 15, 16, 7, 2, 17, 9, 17, 1]
'''
t6=tuple(list1)
print(t6)
'''
(4, 15, 16, 7, 2, 17, 9, 17, 1)
'''
1.2元组拆包
#拆包、装包
a = ('computer',2,8000,(2018,10,16))
#获取所有字段数据
goods,num,price,data=a
#获取部分字段
*_,price,data=a
#
goods,*num=a
#*num返回剩下所有的数据组成的一个列表
#通配符构成的变量可以替代指定范围内的所有变量,这为取出指定元素带来了便利。很多时候可以使用'*_'来表示不想要的变量;
2.1 列表,list,[]
2.1.1 使用append方法可以将元素添加到列表的尾部;
2.1.2 使用Insert方法可以将元素插入到指定的列表位置;
2.1.3 使用pop方法可以将特定位置的元素移除并返回;
2.1.4 使用remove方法可以移除第一个符合要求的值;
2.1.5 连接和联合列表
①两个列表可以使用+号连接;
②extend
x=[4,None,'hello']
x.extend([1,3,9])
print(x)
'''
[4, None, 'hello', 1, 3, 9]
'''
2.1.6 排序 sort
2,1.7 切片 :使用切片符号可以对大多数序列类型选取其子集,基本形式为start:stop
seq=[7,2,5,8,5,6,9]
seq[2:5]
print(seq[2:5])
起始位置start是包含索引,stop是不包含索引,因此元素的数量stop-start;
start和stop省略的情况,即取所有;
seq=[7,2,5,8,5,6,9]
seq[:]
print(seq[:])
'''
[7, 2, 5, 8, 5, 6, 9]
'''
负索引,即从序列的尾部进行索引
seq=[7,2,5,8,5,6,9]
seq[-3:]
print(seq[-3:])
'''
[5, 6, 9]
'''
[start:stop:step]步进值step可以在第二个冒号后面使用,即每隔多少个数取一个值;
seq=[7,2,5,8,5,6,9]
seq[::3]
print(seq[::3])
'''
[7, 8, 9]
'''
当需要对列表或元组进行翻转时,可以设置step=-1
seq=[7,2,5,8,5,6,9]
seq[::-1]
print(seq[::-1])
'''
[9, 6, 5, 8, 5, 2, 7]
'''
3.1. 内建序列函数
3.1.1 enumerate
some_list=['fish','rice','pear','apple']
goods={}
for i,v in enumerate(some_list):
goods[i]=v
print(goods)
'''
{0: 'fish', 1: 'rice', 2: 'pear', 3: 'apple'}
'''
3.1.2 sorted 函数返回一个根据任意序列中的元素新建的已排序列表;
sorted([7,2,5,8,5,6,9])
'''
[2, 5, 5, 6, 7, 8, 9]
'''
3.1.3 zip将列表、元组或其它序列的元素配对,新建一个元组构成的列表;
seq1=['foo','bar','baz']
seq2=['one','two','three']
zipped=zip(seq1,seq2)
print(list(zipped))
'''
[('foo', 'one'), ('bar', 'two'), ('baz', 'three')]
'''
3.1.4 reversed函数将序列的元素倒序排列:
print(list(reversed(range(10))))
'''
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
'''
4.1 字典:哈希表、关联数组
4.1.1 从序列生成字典
mapping={}
for key,value in zip(key_list,value_list):
mapping[key]=value
5.1 集合:无序且元素唯一的容器;{}
两个集合的并集:union;
两个集合的交集:intersection
6.1 列表、集合和字典的推导式
列表推导式的基本形式:[ expr for val in collection if condition ]
strings=['a','am','alibab','baidu','qq','wangyi']
new=[x.upper() for x in strings if len(x)>3]
print(new)
'''
['ALIBAB', 'BAIDU', 'WANGYI']
'''
6.1.1 嵌套列表推导式
some_tuples=[(1,2,3),(4,5,6),(7,8,9)]
new=[x for tup in some_tuples for x in tup]
print(new)
'''
[1, 2, 3, 4, 5, 6, 7, 8, 9]
'''