区别
list可以修改,而tuple一旦定义便不可修改
list
list[-1]
直接取最后一个元素,同理list[-2]
。。。可以取倒数第二。。。等的元素
list.append()
追加元素到末尾
list.insert()
插入元素到某位置
list.pop(i)
弹出i位置的元素
tuple
一旦初始化便不可修改,但若其中有list元素,可对list进行修改
- 空的tuple:
t=()
- 仅有1个元素“逗号是关键”:
t=(1,)
dict
类似于C++中的map
,使用KEY-VALUE存储,具有极快的查找速度(因为存在索引表)
- 初始化:
>>>d={'a':96,'b':22,'c':15}
>>>d['a']
96
>>>d['b']=25 #通过key直接存入数据
>>>d['b']
25
- 其他函数:
>>>‘e’ in d #判断KEY是否存在
False
>>>d.get('e') #判断KEY是否存在,不存在返回NONE(在python环境中不显示结果)
>>>d.get('e',-1) #指定VALUE
>>>d.pop('a') #删除指定KEY-VALUE
- 特点:
- dict的key值为不可变对象:字符串、整数等都是不可变的,而List可变,不可作为key
- 空间换取时间
set
==与dict类似,为一组KEY的集合,不存储VALUE,且无重复的KEY
>>> s = set([1, 2, 2, 3]) #提供一个list作为输入集合
>>> s
{1, 2, 3} #重复元素被过滤
>>> s.add(4) #添加
>>> s
{1, 2, 3, 4}
>>> s.remove(4) #删除
>>> s
{1, 2, 3}
set
与dict
唯一区别:没有存储对应的value,其他原理一样
set=[1,2,3]
s1=set([1,2,3])
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'list' object is not callable #set被定义为{list}类型所导致的错误
if
if
语句的特点:从上往下判断,若某个判断上为true,则执行该语句内容,并忽略之后的elif
和else
- 加入用
input
输入做判断;例如:
s=input('birth')
if birth<2000:
...
会出现错误;
因为input()
返回的数据类型为str
,必须用强制类型转换!
for
for x in ...
循环就是把每个元素带入变量x,然后执行缩进块的语句for x in range(n)
把0到n-1的n个数分别带入xwhile
为条件判断
while 条件:
缩进块语句
break
结束整个循环;continue
结束当前循环;不要滥用这两个,会造成代码执行逻辑分叉过多
议不可变对象
- str是不可变对象,如下代码
>>> a = 'abc'
>>> a.replace('a', 'A') #replace作用在a的内容上,并从新创建了一个新字符串,返回该值
'Abc'
>>> a #并未改变a的内容
'abc'
- list是可变对象,如下
>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a
['a', 'b', 'c']
所以,对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。