一、容器
1.list列表
序列是python中最基本的数据结构,序列中的每个元素都分配一个数字,它的位置或索引,第一个索引是0,第二个索引是1,以此类推
Built-in mutable sequence. #以一种可变的序列进行创建 If no argument is given, the constructor creates a new empty list.
#如果没有参数来提供,构造器会创建一个新的空的列表
The argument must be an iterable if specified.
#如果指定参数,那么这个参数必须是可以迭代的量
类表的数据项不需要具有相同的数据类型
list创建
添加元素(list only):append,extends
删除元素(list only) :del,drop
根据索引读写(tuple读写)
判断容器是否为空
字符串转换
容器元素数量
遍历
数组的遍历
#有一个数组,然后再任意给定一个值,找到数组中的两个数,使得他们的和等于给定的数
#如果找得到的话,就返回数组数组中这两个数的索引值,如果找不到的话,就返回-,-
def two_sum(numbers,target):
for i in range(len(numbers)):
for j in range(i+,len(numbers)):
if (numbers[i]+numbers[j]==target):
return i,j
return -,- print(two_sum([,,,,,,,,],))
2.元组(只读列表)
#元组
t=(,,,'')
print(type(t))
t[]='a'
元组不支持赋值操作,也没有append()方法
Built-in immutable sequence. #不可变的序列 If no argument is given, the constructor returns an empty tuple.
#如果没有参数提供,构造器会返回一个新的空元祖
If iterable is specified the tuple is initialized from iterable's items.
#如果被指定为可以迭代的额,那么这个元组将会从可迭代的元素项进行初始化
If the argument is a tuple, the return value is the same object.
#如果参数是一个tuple,那么返回的值就是同一个对象
3.dict字典:字典中的每个键值(key=>value)对使用冒号(:)进行分割,每个键值对之间用逗号,进行分割,整个字典都包括在花括号({})中
#dict字典,key-value的结构,key和value可以是任意的值
d={'a':,'b':,:'one',:'two'}
print(type(dict))#<class 'type'>
print(type(d))#<class 'dict'>
print(d)#{'a': , 'b': , : 'one', : 'two'} #访问元素
print(d['a'])#访问对应的value值
print(d[])#访问对应的value值 #判断元素是否存在,就是判断key是否存在,一个key对应一个value,如果要一个key对应多个值,key值就用数组
print('a' in d)#判断'a'是不是在key中的
print( in d ) #删除元素
del(d[])
print(d) #查看字典的长度
print(len(d)) #遍历字典的key
for key in d:
print(d[key])
print('.........')
#遍历字典中的key,value
for key,value in d.items():
print(str(key)+':'+str(value)
4.set集合:是一个无序不重复的元素集合,基本功能包括关系测试和消除重复元素,集合对象还支持union(联合)操作,difference(差)和sysmmetric(对称差集)等数学运算
"""
set() -> new empty set object #set()表示一个一个新的空的set(对象)
set(iterable) -> new set object #set(iterable)表示一个新的set对象 Build an unordered collection of unique elements. #创建的是一个无序的无重复元素的集合
# (copied from class doc)
"""
5.python数据类型:empty和None之间的区别
#向容器中添加元素,空和None是不是一回事
l_a=[] #l_a是一个空的列表
if not l_a:#如果l_a是空
print('Empty')#not xx和is None不是一回事
if l_a is None:#如果不是空
print('None')
最后结果:Empty
注意Empty和None不是一回事,即使是empty元素,但是在内存中还要有一些信息来进行相关的描述,至少分配一个类和内存空间来进行相关的计算,而None是都没有的
6.切片
(1)存取序列(列表,元组,字符串)的任意一部分
(2)格式:seq[开始索引:结束索引:步长]
默认值
负数索引
负数步长
#生成10个元素的数组的方法一
li=list(range())
print(li)
#方法二
li=[]
for i in range():
li.append(i)
print(li) #生成有10个0的数组
li=[]*
print(li)
#生成有10个1的数组
li=[]*
print(li ) #2维数组
li_2d=[[]*]*
print(li_2d)
#修改元素,修改每行的第一个元素
li_2d[][]=
print(li_2d) #深拷贝,修改元素只修改第一个元素
li_2d=[[]* for i in range()]
li_2d[][]=
print(li_2d) s={x for x in range() if x%==}
print(s)
7.生成器
(1)创建一个巨大的列表,但是只需要访问其中的少量的几个元素
(2)...
(3)..
(4)生成生成器:列表推倒时用()替换[]
(5)遍历:next或者for循环
8.函数对象:
def func(a,b,c): #返回的是一个函数对象
print(a,b,c)
print(type(func)) #返回的是 <class 'function'>
9.模块
在python中,模块也有类型
import string
print(type(string)) #<class 'module'>
10.类
class MyClass(object):
pass
print(type(MyClass)) #自己定义类的类型是type类 my_class=MyClass()
print(type(my_class)) #对于自己实例化的一个类,这个类的类型是就是实例化类的类型
11.作业:反转单向链表