列表
列表允许元素不同类型,可以进行增删查改
关于列表的基本用法:
list1 = [1,2,3,4,'5'] #定义一个列表
list1 = list(1,2,3,4)
len(list1) #返回一个列表的长度
list1[0] #列表的索引
list1[1:2] #列表的切片
list1 + list2 #合并两个列表
list1.extend('3', '4')
list1.insert(1,'a') #在对应位置插入元素
if a in list1:
list1.remove(a) #删除指定的元素
#也可以使用pop
list1.pop(1) #去掉对应位置的元素,返回删除的元素的值
list1.clear() #清空所有列表
list1 = sorted(list1) #对列表进行升序排序,sorted返回排序好的列表
list1.sort(reverse = False) #列表的内置方法,进行升序排序
元组
元组的元素不能被更改,也不能增加和删除
相比较列表来说,它占用的内存较小
t1 = (1,2,3,'4')
t2 = tuple(['1',2,3,4])
for i in range(len(t2)):
print(t2[i])
t1 = (1,2,3,4,5) #原来的t1被回收
字典
字典是由键值对组成的一种数据结构
dict1 = {'name':"hao", 'age':38}
dict2 = dict(zip(['name', 'age'],['hao', 23]))
#zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组
#然后返回由这些元组组成的列表。
dict3 = dict(key1 = 2, key2 = '3') #{'key1': 2, 'key2': '3'}
dict2['age'] #23 访问键的对应值
dict2.keys() #返回所有键
dict2.values() #返回所有值
#更新值
dict2['age'] = 25
dict2.update(age=25)
dict2.get(age, 50) #get方法可以获得键的对应值,也可以设置默认值
#删除对应键值对
dict2.pop(key,50) #删除对应元素,返回值,否则返回默认值
#清空字典
dict2.clear()
集合
集合正如高中所学的一样,是由一群类型相同的元素组成,没有重复
s1 = {1,1,2,3,4} #{1,2,3,4}
s2 = set((1,2,3,4))
s3 = set(range(1,10)) #构造器
#集合的添加和删除
s1.add(5)
s1.update({6,7})
s1.discard(7)
s1.remove(6)
s1.pop() #删除开头元素
集合与集合间的运算
包括 交集、并集、差集
s1 | s2 #并集
s1 & s2 #交集
s1 - s2 #差集
s1 > s2 #真子集
s1 >= s2 #子集
生成式和生成器
生成式由列表生成式、字典生成式和集合生成式
l1 = [i for i in range(10)]
生成器:
生成器和生成式的主要区别在于他们的执行过程,即:生成式会计算出所有需要的值,然后一起返回,就像把所有可以孵化的鸡蛋都孵化成小鸡之后,再一起把小鸡送进养鸡场;而生成器不同,他是孵出一个小鸡,就送一个小鸡进养鸡场,即每产生一个值,就返回一个值。(来自参考链接)
生成器语法
s1 = (x **2 for x in range(5))
通过yield构造生成器函数
def fib(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
yield a
def main():
for val in fib(20):
print(val)
if __name__ == '__main__':
main()
参考链接:
生成式和生成器
jackfrued——Python100天