关于‘容器’结构的定义

[oct]

在容器结构里的一些基本函数应用

注意在字符串中通常我们计数从0开始

def main():
    str1 = 'hello'
    print(len(str1))#字符串长度  
    print(str1.capitalize())#首字母大写
    print(str1.find('ll'))#找到对应的字符 并且显示长度
    print(str1.rfind('o'))#右往左找
    print(str1.index('o'#不只是字符 包括数列也可以查找
    print(str1.startswith('h'))#是否开始是什么
    print(str1.endswith('o'))#是否结尾是什么
    print(str1.center(20,'#'))#填充多少字符 以什么填充
    print(str1.rjust(20,'$'))
    str2 = 'a123456'
    print(str2.isdecimal()) # 判断是否数字
    print(str2.isalnum())# 判断是否数字字母
    #print(str2.strip())# 去掉左右两边的空格
>该处为重点:即计数从0开始算
    print(str2[3::3])#字符从第3个开始到后面且间隔为3
    print(str2[-1])# 倒数第一个 但是倒数并没有0
    print(str2[::2])
    print(str2[2:])#2开始到最后
    print(str2[1:3])#到第1个然后加上后面3-1位
    print(str2[-1:-3:-1])如果是负数定义后面一定要有定义从右开始计数

>此处f为数组
    f = [100, 300, 500]
    for f in f:  
        print(f)
    f.append(400)#添加到该组的最后
    f.pop(1)#
    del f[2]#
    f.remove(100)
    print(f)
    #print(f.index(100, 3, 5)) # 表示寻找100 在3~5个数列中寻找
    print(f.pop(0)) # 表示找到第几列数字提取出来并且删除里面的该元素


if __name__ == '__main__':
    main()

下列有个定义函数新的结构意义

    f = [100, 300, 500]
    # 类似for in 但是下列意思为
    # 在数组f中循环f次每次数字为a = f数组得数
    for a in f:  
        print(a)
from random import randint
#容器结构【】

def main():
    #有了列表(容器)我们可以使用1个变量保存多个数据
    # 更为重要的是我们可以使用循环对列表中保存的数据进行操作
    f = [0] * 6
    for _ in range(10000):
        a = randint(1, 6)
        f[a - 1] += 1
    for x in range(6):
        print('%d是%d' % (x + 1, f[x]))


#函数 enumerate 表示可以取出列表里的对列和数值/
如果要对list实现类似Java那样的下标循环怎么办?/
Python内置的enumerate函数可以把一个list变成索引-元素对/
这样就可以在for循环中同时迭代索引和元素本身:/
 for i, value in enumerate(['A', 'B', 'C']):
...     print(i, value)
...
0 A
1 B
2 C


f = [100, 200, 300]
for index, val in enumerate(f):
    print(index, ':', val)
"""
因此上面还可以写为
for index, val in enumerate(f):
    print('%d是%d' % (index, val))

"""

生成器

生成式 创建列表之后已经准备就绪所以需要耗费较多的内存空间

生成器 可以获取到数据 每次所需要数据的时候通过生成器取出数据 他不占用额外内存 当然这需要花更多的时间

时间和空间是不可调和的矛盾!

软件和硬件在逻辑上是等效的


def main():
    f = ['aggs', 'ctreetert', 'dbfh', 'b']
    # python内置的排序方法都是升序
    # 如果希望排列成降序 可以通过reverse来指定
    # python中的函数几乎都是没有副作用的
    # 调用函数之后不会影响传入的参数
    f2 = sorted(f, reverse=True)
    print(f)
    print(f2)
    f.sort()
    print(f)
    # 表示字符串长短来排序
    f3 = sorted(f, key=len)
    print(f3)


def comparison(*args):
    f = list(args)  # 表示创建成列表生成式
    # f = [x ** 2 for x in range(1,10)] 也表示创建列表 1到10的所有数的2次方的生成式 意味着不使用它也要算出来占内存
    # f = (x ** 2 for x in range(1,10) 表示生成器 意味着不用它的时候就不会占内存

    min_score = max_score = f[0]
    a = 0
    for x in f:
        a += x
        if x > max_score:
            max_score = x
        elif x < min_score:
            min_score = x
    print('最高分', max_score)
    print('最低分', min_score)
    print('平均分 %.2f' % (a / len(f)))


f = [x + y for x in 'ABCDE' for y in '1234']

if __name__ == '__main__':
    rabit1()

复杂的生成器 yield

之前我们讲过生成器的用法 这次通过yield也可以生成 在def返回值 从而可以进行想取值但无法返回的作用

def fib(n):
    a, b = 0, 1
    for _ in range(n):
        a, b = b, a + b
        yield a
f = fib(20)        
for val in fib(20):
    print(val)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值