python 数据类型、集合、函数基础

数据类型可变不可变
可变 列表 字典
不可变 字符串 数字 元祖
访问顺序
直接访问 数字
顺序访问:字符串,列表,元祖
映射:字典  访问速度快,内存占用高
存放元素个数
容器类型 列表 元祖 字典
原子:数字,字符串

集合 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)

你可能感兴趣的:(python 数据类型、集合、函数基础)