python 数据类型、集合、函数基础
2018-05-07 本文已影响0人
little_short
数据类型可变不可变
可变 列表 字典
不可变 字符串 数字 元祖
访问顺序
直接访问 数字
顺序访问:字符串,列表,元祖
映射:字典 访问速度快,内存占用高
存放元素个数
容器类型 列表 元祖 字典
原子:数字,字符串
集合 1.不同元素 2.无序的 3.只能存放不可变类型
s = {1, 2, 3, 4, 5, 2}
print(s)
v = '123'
s1 = set(v)
print(s1)
s = set(['ss', 123, 'sdd'])
print(s)
s = {1, 2, 3, 4, 5, 6}
_add() 添加
s.add('s')
print(s)
_clear
s.clear()
print(s)
_copy()
_pop() 随机删
s.pop()
print(s)
remove() 指定删除 删除元素没有会报错
s.remove(1)
print(s)
discard() 指定删除 删除元素没有不会报错
s.discard(9)
print(s)
python_l = ['sd', 'sdsda', 'swsweds', 'ooo']
linux2 = ['sfff', 'sdsda', 'ssooi','sd']
py_li = []
for p_name in python_l:
if p_name in linux2:
py_li.append(p_name)
print(py_li)
p_s = set(python_l)
l_s = set(linux2)
求交集
print(p_s.intersection(l_s))
print(p_s & l_s)
求并集
print(p_s.union(l_s))
print(p_s | l_s)
求差集
print(p_s - l_s)
print(p_s.difference(l_s))
print(l_s - p_s)
交叉补集
print(p_s.symmetric_difference(l_s))
print(p_s^l_s)
python_l = ['sd', 'sdsda', 'swsweds', 'ooo']
linux2 = ['sfff', 'sdsda', 'ssooi','sd']
p_s = set(python_l)
l_s = set(linux2)
求差集并更新
p_s.difference_update(l_s)
print(p_s)
p_s = p_s-l_s
print(p_s)
判断是否有交集
print(p_s.isdisjoint(l_s))
s1 = {1, 2}
s2 = {1, 2, 3}
判断 是否是其子集 返回布尔值
print(s1.issubset(s2))
判断 是否是其父集 返回布尔值
print(s2.issuperset(s1))
_update() 更新 可以更新多个可迭代的值 add只能添加一个值
s1.update([1,2,3,5])
print(s1)
定义不可变集合、
s = frozenset('hello')names
print(s)
names = ['alex', 'alex', 'wssaaf']
s = set(names)
print(s)
names = list(names)
print(names)
字符串格式化 字符串拼接
print('i am %s my hobby is alex' % 'sss')
print('i am %s my hobby is %s' % ('ss', [2, 23]))
name = 'ssss'
print('i am %s my hobby is %d' % (name, 5))
打印浮点数
tpl = 'pesee %.2f' %999.33333
print(tpl)
打印百分比
tpl = 'pesee %.2f%%' %999.33333
print(tpl)
print('i am %(name)-60s my hobby is s' % {'name': 'sds'})
sep
print('root', 'sss', '0', sep=':')
format 字符串格式化
tpl = 'i am {1}, age {1}, {2}'.format('see', 'sd', 'sdd')
print(tpl)
tpl = 'i am {name}, age {age}, {ss}'.format(**{'name':'sss', 'age':'sd', 'ss' :'sdd'})
函数
数学意义的函数
python中的函数
def test(x):
"注释"
x += 1
return x
print(test(2))
def 关键字
test 函数名
() 参数
"" 文档注释
x += 1 处理逻辑
return 返回定义的值
优点
代码重用
保持一致性 已维护行
可扩展性
函数和过程
过程 没有返回值的函数
def test0 ():
msg = 'sdadadasdad'
print(msg)
def test1 ():
msg = 'sasfsdfsdfsf'
print(msg)
return msg
t1 = test0()
t2 = test1()
print(t1)
print(t2)
形参 函数内部使用 不占内存空间 test(x,y)
实参 test(10,20)
def test(x, y, z):
print(x)
print(y)
print(z)
位置参数 一一对应 缺少 多余都不行
test(1, 2, 3)
关键字参数 无需一一对应 缺少 多余都不行
test(y=1, z=2, x=3)
位置参数要在关键字的左边 一一对应
test(1, y=2, z=3)
test(1, y=2, z=3, y=4) 报错
test(y=1, 1, 3) 报错
def handle(x, type=None):
print(x)
print(type)
handle('hello', type='sss')
参数组
** 字典 *列表
非固定长度的参数
def test(x, y, *args):
print(x)
print(args)
print(type(args))
test(1, 2, 3, 4, 5, 6)
当做一个整体传
test(1, 2, {'name': 'ssw'})
test(1, 2, *[1, 2, 3, 1, 2, 3])
def test(x, **kwargs):
print(x)
print(kwargs)
print(type(kwargs))
test(1, y=2, z=3)
test(1, y=2, z=3,z=4) 一个参数不能传两次
test(1, 2, 2, 3, 4, 45, y=2, z=3) 报错
先写 *args
def test(x, *args, **kwargs):
print(x)
print(kwargs)
print(type(kwargs))
test(1, 2, 3, 32, 4, 4, 54, 5, y=2)