数据类型
string
-
创建:
tmp=' ' / tmp=str(a)
-
切片:
a ='abcde'
a[0:3] 表示取下标 0-2 的字符 左闭右开
a[0:3:1] 表示取下标0-2的字符,步长为1 -
常见操作:
-
循环遍历
字符串的遍历将会是把字符串拆分成最小单位
-
转义字符串
- 备注
-
中文字符串处理:
在网络上发送字符串时要求必须转换成(bytes)形式,用字符串的encode()方法,返回值是字节串(bytes)
encode(encoding = 'utf-8',errors = 'strict')
encoding 默认编码为utf-8,其他还有gbk,gb2312
errors编码错误的处理方式,默认为strict(报错),也可以是ignore,replace
反之,从网络上接收到的字符串(bytes)若为字符串,则要使用字节串(bytes)的decode方法来解码,才能看到原来的字符串
decode(encoding = 'utf-8',errors='strict')
编码解码时要一致,否则不能还原或者报错
bytes = str.encode()
str = bytes.decode() -
当py脚本中有中文数据,不能执行时,需要在文件头声明:
# coding=gbk
list
-
创建
a = list() a = [ ] (列表中的元素可以使不同类型的)
-
常用操作
- 列表的嵌套
import random
#三个空教室
offices = [[],[],[]]
#八个老师
names = [a,b,c,d,e,f,g,h,]
i = 0
for name in names:
index = random.randint(0,2)
offices[index].append(name)
i=1
for tempNames in offices:
print('办公室%d的人数为:%d' % (i ,len(tempNames)))
i+=1
for name in tempNames:
print('%d'name)
- 备注
-
列表的乘法
[1]*5 ->[1,1,1,1,1]
-列表推导式
[ for i in xx]
[i*2 for i in range(4)]
[0, 2, 4, 6]
用循环变量i去遍历xx,将i相关表达式的值放入到一个列表中
xx:可遍历的对象,列表,元组,range函数相关表达式>
dict
-
创建
a={a:b,b:2} a = {}
特点: -
常用方法:
普通创建字典的方法
users = dict(zhang=10000,wang=10000,li=10000,zhao=10000)
更优雅的方式
names=["rr","ee,"ww","qq"]
user1.dict().formatkeys(names,10000)
获取字典的值
a={'a':1,'b':'to','c':'63'}
a['b']
>>> output: to
"""
上面的这种value值获取方式较为常见,但如果a中没有b,
或者在字典的使用过程中b 这个key被del了呢?
这是会报一个KeyError的错误,所以养成好习惯,使用下面的方式
当key值不存在时,返回none,或者自定义一个默认值。
"""
a.get('b',[default_no可选...])
更新与删除
# 更新
a={'a':1,'b':'to','c':'63'}
a.update('a':2)
a.update(a=2) # 这种方式同样适用与更新操作
# 删除某个键值对
del a['a']
pop('a')
"""
两者都可以达到删除某个键值对的操作,
但后者相当于去除后删除,具备返回值
"""
del a 删除字典a
a.clear()清空字典a
has_key操作
"""
python2中,判断字典是否存在某个值,可以使用has_key('key'),
但在python3中取消了该参数,如果我们想判断可以使用以下方式:
"""
a={'a':1,'b':'to','c':'63'}
'b' in a.keys()
a.__contains__('b')
字典的enumerate
a = {'a': 1, 'b': 'to', 'c': '63'}
for line, item in enumerate(a.items(), start=1):
print("[{}] {} --> {}".format(line, *item))
>>> output:
"""
[1] a --> 1
[2] b --> to
[3] c --> 63
"""
-
循环遍历
- 有序字典
某些时候我们需要保持dict的有序型,这时候可以使用OrderedDict,这是一个dict的子类
>>> from collections import OrderedDict
# 无序的dict
>>> d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2}
# 将d按照key来排序
>>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
# 将d按照value来排序
>>> OrderedDict(sorted(d.items(), key=lambda t: t[1]))
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])
# 将d按照key的长度来排序
>>> OrderedDict(sorted(d.items(), key=lambda t: len(t[0])))
OrderedDict([('pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)])
"""
使用popitem(last=True)方法可以让我们按照LIFO(先进后出)的顺序删除dict中的key-value,
即删除最后一个插入的键值对,如果last=False就按照FIFO(先进先出)删除dict中key-value。
"""
>>> d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2}
# 将d按照key来排序
>>> d = OrderedDict(sorted(d.items(), key=lambda t: t[0]))
>>> d
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
# 使用popitem()方法来移除最后一个key-value对
>>> d.popitem()
('pear', 1)
# 使用popitem(last=False)来移除第一个key-value对
>>> d.popitem(last=False)
('apple', 4)
"""
使用move_to_end(key, last=True)来改变有序的OrderedDict对象的key-value顺序,
通过这个方法我们可以将排序好的OrderedDict对象中的任意一个key-value,
插入到字典的开头或者结尾。
"""
>>> d = OrderedDict.fromkeys('abcde')
>>> d
OrderedDict([('a', None), ('b', None), ('c', None), ('d', None), ('e', None)])
# 将key为b的key-value对移动到dict的最后
>>> d.move_to_end('b')
>>> d
OrderedDict([('a', None), ('c', None), ('d', None), ('e', None), ('b', None)])
>>> ''.join(d.keys())
'acdeb'
# 将key为b的key-value对移动到dict的最前面
>>> d.move_to_end('b', last=False)
>>> ''.join(d.keys())
'bacde'
-
tuple
-
set
-
None