一.列表
- 列表里可以放任意类型变量
- 列表大小不是固定的
- 使用下标获取列表元素
- 切片操作
- 负数操作
- 越界
- 列表遍历使用for in
1.常用方法:
insert pop remove sort append
expand(将两个列表的所有元素都当成单个元素放在列表)
队列,堆栈等数据结构都可以使用列表实现
l.append('sa')
l.append(10)
l.append(True)
l=(‘sa’,10,true)
列表可以放任何类型如字符串,数字,布尔类型,None等等
2.切片操作
l[2:4]取列表里从第二个到第4个元素
如果取列表最后一个元素,可以使用负数操作如 l[-1],也可以使用l[l(len)-1]
而l[1:-1] 取得则是列表中所有操作
二.字典
字典是无序的,字典相当于key和value对应 ,字典的key不能重复
1)字典的定义:
d0=dict(a=1) 或者d1={"a":1}
2)字典的获取:
d['name'] = 'sa'
d.get('name')
使用get获取,可以给元素一个默认值,比如d.get('name','XXX'),这里xxx是默认值,如果元素有对应值,则会显示对应值,如果没有,则显示默认值
3)字典的赋值
如d['name'] = 'sasa'
则输入d 会输出 {'name':'sasa'}
使用d.setdefault('name','aaaa') 输出还是sasa 也就是说setdefault并不能赋值给已有value的key,但是可以赋值给没有value的key
4)字典的常用方法
d.keys()
d,values()
d.items() 这个获取字典里的key和value的值是对应的 [('name','aaaa'),('name1','xxxx')]
for k,v in d.items():
print k,v
输出结果是: name xxxx
name1 aaaa
5)字典虽然是无序的,但是也可以做成有序的,可以使用OrderedDict,用途不多
三。列表和字典是按引用的。指向同一块内存地址
1.也就是说定义一个列表a 然后a1=a a2=a a1.append('20'),这个时候a1和 a2都将会添加了20这个元素
如果a1指向另外一个列表,a1=['333'],此时再输出a和a2则还是原来的列表,这是因为a1已经指向新的一个列表一个空间了,而a和a2指向的是同一个空间
2.如果只是想a3拿到a的元素,并不想指向同一块内存地址
1)可以引入一个deepcopy的库(不是标准库,需要安装哈)
2)可以使用切片的方法 a3 = a[:]
这是a3的元素也跟a一样,但是不是同一个地址
id(a3)和id(a)可以查看地址是不同的
四。逻辑控制 条件语句
a=False
if not a:
print"aaaa"
双重否定表肯定
python中没有&&和|| 可以用and or
if a==0 or (a==False and a==1)如果一起使用,可以使用括号表示一下优先判断
for in 和while 循环
特别注意:continue和break的使用,continue是跳出本次循环,break为结束本次循环。
五 编码问题
gbk和utf-8
unicode相当于一个中转站吧。可以使用encode转成gbk或者utf-8
其实就是将 unicode 作为一个中转站,将各种编码转换(decode)成unicode 使用 s.decode(chaset)
,然后再将unicode编码的字符串转换(encode)成想要的编码 s.encode(chaset)
。