博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python02_流程控制及数据结结构
阅读量:4325 次
发布时间:2019-06-06

本文共 5367 字,大约阅读时间需要 17 分钟。

----------------- 流程控制 --------------------

条件判断

  • 语法:

    # 单分支if 
    <执行代码块>
    # 多分支if
    <执行代码块1>
    elif
    <执行代码块2>
    elif
    <执行代码块3>
    else:
    <执行代码块>
    # 注: # condition必须为一个bool类型 # if elif else语句后面有一个冒号,冒号之后的执行代码块需要另起一行并进行缩进
  • 示例:

    # 单分支示例age = 18if age < 20:    print("tool small")# 多分支示例(成绩评级)result = int(input('Please input your result: '))if result >= 90:    print("Your result is A")elif result >= 80:    print("Your result is B")elif result >= 70:    print("Your result is C")elif result >= 60:    print("Your result is D")else:     print("Your result is E")#注:    # input()为内建函数,在控制台与用户进行交互,获取用户输入,返回字符串    # int(value) 将给定的值value转换成整数

循环

  • while 循环

    # 语法while cond:    blockwhile True:   # 死循环    pass# 示例a = 10while a : # 条件满足则进入循环,当a = 0时,0为等价False,则不进入循环    print(a)    a -=
  • for 循环

    # 语法for element in interatable:   # 可迭代对象有可迭代元素,进入循环    block# 示例:循环输出10以内的数字for i in range(0, 10):    print(i)# 注:      # range(stop) 计数器    # range(start, stop, step)生成一个序列,遍历start和stop之间的值,前包后不包;step表示步长,默认为1;
  • continue 跳过当前当次循环,继续下一次循环
  • break 结束当前循环
  • else子句:如果循环正常结束,else子句会被执行

----------------- 数据结构 ---------------------

概念

  • 数据结构就是通过某种方式组织在一起的数据元素的集合,这些元素可以是数字或字符;在Python中。最基本的数据结构是序列。序列中的每个元素被分配一个序号(即元素的位置,称为索引,索引从0开始,即:第一个索引是0,第二个是1,以此类推)

列表

  • 列表(List):有序的集合,可修改,使用[]表示

  • 定义列表

    • 格式:list_name = [1, 2, 3, 4, 5]

    • 空列表:list_name = []

    • 列表操作

      >>> lst = [1, 2, 3]# append(obj),末尾追加元素,就地修改且返回None,时间复杂度O(1)>>> lst.append(5)       >>> lst[1, 2, 3, 5]# list_name[index] = value 索引访问修改,需注意索引不可越界>>> lst[3] = 4      >>> lst[1, 2, 3, 4]# insert(index, obj) 在指定索引位置插入元素obj,就地修改且返回None,时间复杂度O(n),可越界:越上界,尾部追加;越下界,头部追加>>> lst.insert(1,6)     >>> lst[1, 6, 2, 3, 4]# extend(interatable),将可迭代元素追加至列表中,就地修改且返回None>>> lst.extend(range(7,10))>>> lst[1, 6, 2, 3, 4, 7, 8, 9]>>> lst.extend([11, 12])>>> lst[1, 6, 2, 3, 4, 7, 8, 9, 11, 12]# + 将两个列表连接起来,产生新的列表,原列表不变>>> lst + [100, 200, 300][1, 6, 2, 3, 4, 7, 8, 9, 11, 12, 100, 200, 300]>>> lst     # 原列表不变[1, 6, 2, 3, 4, 7, 8, 9, 11, 12]# * 将本列表元素重复n次,返回新列表;注意分辨以下示例区别>>> lst * 3[1, 6, 2, 3, 4, 7, 8, 9, 11, 12, 1, 6, 2, 3, 4, 7, 8, 9, 11, 12, 1, 6, 2, 3, 4, 7, 8, 9, 11, 12]>>> lst     # 原列表不变[1, 6, 2, 3, 4, 7, 8, 9, 11, 12]>>> [1, 2, 3] * 3[1, 2, 3, 1, 2, 3, 1, 2, 3]>>> [[1, 2, 3] * 3][[1, 2, 3, 1, 2, 3, 1, 2, 3]]>>> [[1, 2, 3] ] * 3[[1, 2, 3], [1, 2, 3], [1, 2, 3]]# remove(value),从左至右匹配第一个value的值,找到则删除,就地修改且并返回None>>> lst = [1, 2, 3, 1, 2, 5, 6]>>> lst.remove(1)>>> lst[2, 3, 1, 2, 5, 6]# pop(index),不指定index,从列表尾部删除一个元素,指定index则从索引出删除一个元素,返回所删除元素,越界抛出:IndexError错误>>> lst.pop()6>>> lst[2, 3, 1, 2, 5]>>> lst.pop(3)2>>> lst[2, 3, 1, 5]# clear(),清除列表所有元素,剩下一个空列表>>> lst.clear()>>> lst[]# reverse(),对列表内元素降序排序,就地修改且返回None>>> lst = [1, 2, 3, 1, 2, 5, 6]>>> lst.reverse()>>> lst[6, 5, 2, 1, 3, 2, 1]# sort(key=None, reverse=False),对列表内元素进行排序,就地修改且返回None;默认为升序,若reverse=True,则为降序;key一个函数,指定如果排序>>> lst.sort()>>> lst[1, 1, 2, 2, 3, 5, 6]>>> lst.sort(reverse=True)>>> lst[6, 5, 3, 2, 2, 1, 1]# in 包含关系判断,即:in左侧元素是否包含在右侧列表内;返回布尔值>>> [1, 2] in [1, 2, [3, 4]]False>>> [3, 4] in [1, 2, [3, 4]]True# 列表复制:lst1 = lst2>>> a = list(range(4))  # 产生一个新列表a>>> b = list(range(4))  # 产生一个新列表b>>> a == b  # 判断a列表和b列表内元素是否相同True>>> c = a       # 将列表c指向列表a的列表内存地址,所以当修改列表c或者列表a时,修改的都是a和c所指向的同一个内存地址的列表元素>>> c[2] = 10>>> c[0, 1, 10, 3]>>> a[0, 1, 10, 3]>>> b       # 虽然a和b列表内容相同,但是b和a指向的是不同的内存地址,所以当a列表修改时,b列表不变[0, 1, 2, 3]>>> id(a), id(c), id(b)     # 通过id(),查看内存地址,由次可见,a和c内存地址相同(4509036368, 4509036368, 4509036288)# copy(),影子拷贝(浅拷贝),遇到引用类型,只复制引用>>> a = [1, [2, 3], 4]  >>> b = a.copy()    # 列表内元素复制,列表内引用的列表,只复制引用地址,即列a和b列表内引用的列表为同一内存地址的列表>>> b[1, [2, 3], 4]>>> b[1][1] = 11    # 当b修改列表内引用的列表内元素时,由于a和b列表内引用的列表指向同一内存地址,所以a也会随之修改>>> b[1, [2, 11], 4]>>> a       [1, [2, 11], 4]>>> b[0] = 99       # 由于列表内元素直接复制,所以当b修改元素时,a不会发生修改>>> b[99, [2, 11], 4]>>> a       [1, [2, 11], 4]# 深拷贝deepcopy(需调用copy模块;import copy),直接复制所有元素,列表内的引用类型亦直接拷贝引用元素>>> import copy>>> a = [1, [2, 3, 4], 5]>>> b = copy.deepcopy(a)>>> b[1, [2, 3, 4], 5]>>> b[1][1] = 88    # 列表内引用的列表直接拷贝其列表内容,所以当b列表发生改变时,a列表不变>>> b[1, [2, 88, 4], 5]>>> a[1, [2, 3, 4], 5]# random()随机数>>> import random>>> random.random()0.8953651046887807>>> random.random()0.02852709684663768>>> random.randint(5, 20)       # 返回5-20之间的整数6>>> random.randint(5, 20)15>>> random.randrange(11, 100, 2)    # 返回11-100之间以2递增的整数的随机值,默认步长为157>>> random.randrange(11, 100, 2)41>>> random.choice(['剪刀', '石头', '布'])    # 从非空序列随机挑选一个元素'剪刀'>>> random.choice(['剪刀', '石头', '布'])'石头'>>> random.sample('abcdefghijklmnopqrstuvwxyz!@#$%^&*()', 8)    # 从非空序列取出n个不同的元素并生成一个新列表['!', 'n', '&', 'd', 'q', 'l', 's', 't']>>> random.sample('abcdefghijklmnopqrstuvwxyz!@#$%^&*()', 8)['x', '@', 'c', 'p', 'a', 'u', 'h', 'g']>>> lst = [1, 2, 3, 4, 5]>>> random.shuffle(lst)     # 就地打乱列表排序>>> lst[2, 5, 3, 1, 4]
  • 索引:序列里的元素都是有序号的,从0开始递增,索引0指向第一个元素,最后一个元素可以用-1表示

元组

  • 元组(tuple):不可修改,使用()表示
  • 定义元组:
    • tuple_name = (1, 2, 3, 4)
    • 一个元素元组定义:(1,) 注意有个逗号
    • 空元组:tuple_name = (),tuple_name = tuple()工厂方法
  • 同列表一样,可以通过索引index访问

  • 元组操作:元组是只读的,所以增删改查操作都没有

    >>> tup = tuple(range(1, 10, 2))  # interable>>> tup(1, 3, 5, 7, 9)>>> t = (1,)  # 注意一个元素需要加逗号>>> t * 5     # 产生新元组,原元组不变(1, 1, 1, 1, 1)>>> t(1,)>>> tup[2]    # 通过index查看tuple特定索引位置的值5# count(value),返回元组中value的次数>>> tup = (1, 2, 3, 2, 3, 2)>>> tup.count(2)  3# len(tuple)返回元组中元素的个数>>> len(tup)6

转载于:https://www.cnblogs.com/summer-dhy/p/11261889.html

你可能感兴趣的文章
Android 关于悬浮窗权限的问题
查看>>
如何使用mysql
查看>>
linux下wc命令详解
查看>>
敏捷开发中软件测试团队的职责和产出是什么?
查看>>
在mvc3中使用ffmpeg对上传视频进行截图和转换格式
查看>>
python的字符串内建函数
查看>>
Spring - DI
查看>>
微软自己的官网介绍 SSL 参数相关
查看>>
Composite UI Application Block (CAB) 概念和术语
查看>>
64位MATLAB和C混合编程以及联合调试
查看>>
原生js大总结二
查看>>
PHP基础
查看>>
UVa 11488 超级前缀集合(Trie的应用)
查看>>
Django 翻译与 LANGUAGE_CODE
查看>>
[转]iOS教程:SQLite的创建数据库,表,插入查看数据
查看>>
【转载】OmniGraffle (一)从工具栏开始
查看>>
初识ionic
查看>>
java 中打印调用栈
查看>>
开发 笔记
查看>>
数据挖掘算法比赛 - 简单经验总结
查看>>