python note 5

# _*_ coding: utf-8 _*_
#zip()组合多个元组
name=("张三","李四","王五")
age=(18,20,22)
sex=("男","女","女")
zip(name,age,sex)
list(zip(name,age,sex))
for v in zip(name,age,sex):
    print("姓名:{};年龄:{};性别:{}".format(v[0],v[1],v[2]))

# _*_ coding: utf-8 _*_
from pprint import pprint#格式化输出工具
from prettyprinter import cpprint #颜色格式化输出
"""
[
    ("张三","李四","王五","赵六"),
    (18,19,20,21,22,23),
    ("保密","男","女","男")
]
变成
[
    ('张三',18,'保密'),
    ('李四',19,'男'),
    ('王五',20,'女’),
    ('赵六',21,'男')
]
解题思路:把行转化为列
"""
name=("张三","李四","王五","赵六")
age=(18,19,20,21,22,23)
sex=("保留","男","女","男")
print(zip(name,age,sex))
print(list(zip(name,age,sex)))
#*args表示不定长的位置参数
def zip_ext(*args):
    print(args)
    col,row,row_length_arr,data=None,None,[],[]#分别定义列、行、行长度列表
    arr=[name,age,sex]
    pprint(arr)

    for v in [name,age,sex]:
        row_length_arr.append(
            len(v)
        )
    row=min(row_length_arr) #通过行长度列表获取最小值得到最适合的行数
    col=len(args) #得到列数

    for x in range(0,row):
        data.append([])
        for y in range(0,col):
            data[x].append(arr[y][x])
        data[x]=tuple(data[x])

    #pprint(data)
    return data
#调用函数
res=zip_ext(name,sex,age)
res=zip_ext(name,sex,age)
print(res)

# _*_ coding: utf-8 _*_
person=dict(
    id="001",
    name="张三",
    age=18,
    sex="男",
    height=180,
    weight=70
)
#取出所有键进行遍历
#print(person.keys())
for k in person.keys():
    print("{}=>{}".format(
        k,
        person[k]
    ))
print("-----------------------------")
# 取出所有值进行遍历
#print(person.values())
for v in person.values():
    print(v)
print("-----------------------------")
#取出键值对进行遍历
#print(person.items())
for k,v in person.items():
    print("{}=>".format(k,v))
print("-----------------------------")
#enumerate()用到列表和元组中取出索引和值
#print(list(enumerate(person)))
for i,k in enumerate(person):
    print("{}:{}=>{}".format(
        i,k,person[k]
    ))
# _*_ coding: utf-8 _*_
data=[
    {"name":"张三","affress":"北京"}
    {"name":"李四","affress":"北京"}
    {"name":"王五","affress":"北京"}
    {"name":"赵六","affress":"北京"}
    {"name":"孙七","affress":"北京"}
    {"name":"小明","affress":"北京"}
]
for v in data:
    print("姓名:{},家乡:{}".format(v['name'],v['address']))
print("--------------------------------------------------------")
#**变量:不定长关键字参数**v=>name=xxx,address=xxx
for v in data:
    print("姓名:{name},家乡:{address}".format(**v))

# _*_ coding: utf-8 _*_
#查看range的帮助手册
import math
help(range)
"""
1.break,中止循环,跳出循环
2.continue,跳过符合条件的循环,不符合还会继续往下执行
3.pass,保持程序结构完整性
4.for...else...,循环结束执行else里面的代码块
"""
"""
推导列表思路一:
1.定义一个空列表
2.使用循环
3.追加值到列表中去
arr=[]
for v in range(1,11):
    arr.append(v)
print(arr)

n1=[v ** 3 for v in range(1,11)
pirnt(n1)
"""
langs=['python','java','php','javascript','html','css']
n4=[v.upper for v in langs]
print(n4)
print("--------------------")
n2=[round(math.sqrt(v),1)for v in range(1,11)]
print(n2)
print("-----------------------")
n3=[m**3 for m in range(1,11)]
print(n3)
print("--------------------------------")
n5=[n%5==0 for n in range(1,101)]
print(n5)
print("------------------------------------")
n5=[v for v in range(1,101) if v % 5==0 and v %3==0]
"""
n5=[v for v in range(1,101) if v % 5 == 0 if v % 3==0]
n5=[]
for v in range(1,101):
    if v % 5==0:
        if v % 3==0:
            n5.append(v)
print(n5)
"""

# -*- coding: utf-8 -*-
from prettyprinter import cpprint

"""
题1:
已知:
name = ("小明","小丽","小美")
age = (18,16,17)
sex = ("男","女","女")
height = (175,160,155)
weight = (65,50,45)

列表推导式推导出:
[
    {"name":"小明","age":18,"sex":"男","height":175,"weight":65},
    {"name":"小丽","age":16,"sex":"女","height":160,"weight":50},
    {"name":"小美","age":17,"sex":"女","height":155,"weight":45}
]

-------------------------------------------

题2:
已知:
persons = (
    ("小明","小丽","小美"),
    (18,16,17),
    ("男","女","女"),
    (175,160,155),
    (65,50,45)
)

列表推导式推导出:
[
    {"name":"小明","age":18,"sex":"男","height":175,"weight":65},
    {"name":"小丽","age":16,"sex":"女","height":160,"weight":50},
    {"name":"小美","age":17,"sex":"女","height":155,"weight":45}
]
"""


# 题2(*args:不定长位置参数)
def zip_ext(*args):
    col, row, row_length_arr, data = None, None, [], []  # 分别定义列、行、行长度列表、结果

    # pprint(arr)
    for v in args:
        row_length_arr.append(
            len(v)
        )

    row = min(row_length_arr)  # 通过行长度列表获取最小值得到最适合的行数
    col = len(args)  # 得到列数

    for x in range(0, row):
        data.append([])
        for y in range(0, col):
            data[x].append(args[y][x])
        data[x] = tuple(data[x])

    return data


persons = (
    ("小明", "小丽", "小美"),
    (18, 16, 17),
    ("男", "女", "女"),
    (175, 160, 155),
    (65, 50, 45)
)

cpprint(zip_ext(*persons))

print("------------------")

# 把行变为列
persons_list = [
    dict(
        name=v[0],
        age=v[1],
        sex=v[2],
        height=v[3],
        weight=v[4]
    )
    for v in zip_ext(*persons)
]
cpprint(persons_list)

# -*- coding: utf-8 -*-
from prettyprinter import cpprint

"""
题1:
已知:
name = ("小明","小丽","小美")
age = (18,16,17)
sex = ("男","女","女")
height = (175,160,155)
weight = (65,50,45)

列表推导式推导出:
[
    {"name":"小明","age":18,"sex":"男","height":175,"weight":65},
    {"name":"小丽","age":16,"sex":"女","height":160,"weight":50},
    {"name":"小美","age":17,"sex":"女","height":155,"weight":45}
]
"""
name = ("小明", "小丽", "小美")
age = (18, 16, 17)
sex = ("男", "女", "女")
height = (175, 160, 155)
weight = (65, 50, 45)

persons = [
    {
        "name": v[0],
        "age": v[1],
        "sex": v[2],
        "height": v[3],
        "weight": v[4]
    } for v in zip(name, age, sex, height, weight)
]

cpprint(persons)

# _*_ coding: utf-8 _*_
a=b=[1,2,3,4,5,6,7,8,9]
data=[x*y for x in a for y in b]
print(data)


# _*_ coding: utf-8 _*_
# 迭代器,是一个记录遍历位置的对象
a=[1,2,3,4,5]
b=range(10,21)
c=('a','b','c','d','e')
print(a,type(a))
print(b,type(b))
print(c,type(c))
print("-----------------------")
#iter():把可迭代的对象转化为迭代器,类型是以_iterator为后缀
a0=iter(a)
b0=iter(b)
c0=iter(c)
print(a0,type(a0))
print(b0,type(b0))
print(c0,type(c0))

#迭代器迭代完,就释放了,节省内存开支
#序列迭代完不会完全释放,程序进程结束才会释放
#next()访问迭代器下一个值
print(next(a0))
print(next(a0))
print(next(a0))
print(next(a0))
print(next(a0))
print(next(a0))#超过范围出现Stopitera报错

#通过for循环不用异常处理,while循环加上异常处理
"""
异常处理
try
    测试的代码块
except 异常:
    异常处理代码块
else:
    没有发生异常的代码块
finally:
    无论是否发生异常都执行的代码块
"""
while True:
    try:
        print(next(b0))
    except StopIteration:
        break #出现停止迭代的异常,直接跳出循环

# _*_ coding: utf-8 _*_
import sys  # 系统模块
import time  # 时间模块
start_time = time.time()  # 开始是多少秒
# 列表推导式,推导1~1000000
arr = [v for v in range(1, 100000000)]
#生成器,是一种特殊迭代器,推导出来对象占用内存空间就非常小,因为它记录位置的规则
arr_size=sys.getsizeof(arr)#获取对象占用的内存空间,单位是bytes

print(arr_size)
help(sys.getsizeof)
stop_time = time.time()  # 停止是多少秒
print("用时:{}s".format(stop_time - start_time))

猜你喜欢

转载自blog.csdn.net/qq_43011640/article/details/88985402
今日推荐