数据类型

数据类型

  • string

  1. 创建:

    tmp=' ' / tmp=str(a)

  2. 切片:

    a ='abcde'
    a[0:3] 表示取下标 0-2 的字符 左闭右开
    a[0:3:1] 表示取下标0-2的字符,步长为1

  3. 常见操作:

    数据类型
    数据类型
    数据类型

  4. 循环遍历

    字符串的遍历将会是把字符串拆分成最小单位

  5. 转义字符串

    数据类型

  6. 备注
  • 中文字符串处理:

    在网络上发送字符串时要求必须转换成(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

  1. 创建

    a = list() a = [ ] (列表中的元素可以使不同类型的)

  2. 常用操作

    数据类型

  3. 列表的嵌套
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. 备注
  • 列表的乘法

    [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

  1. 创建

    a={a:b,b:2} a = {}
    特点:数据类型

  2. 常用方法:

    数据类型

普通创建字典的方法
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
"""
  1. 循环遍历

    数据类型

  2. 有序字典
    某些时候我们需要保持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

    数据类型
上一篇:无序字典和有序字典


下一篇:collections模块