zoukankan      html  css  js  c++  java
  • python学习笔记(一)、列表和元祖

    博客已迁移到CSDN《https://blog.csdn.net/qq_33375499

    该一系列python学习笔记都是根据《Python基础教程(第3版)》内容所记录整理的

    1.通用的序列操作

      有几种操作适用于所有序列,包括索引、切片、相加、相乘成员资格检查。另外,Python还提供了一些内置函数,可用于确定序列的长度以及找出序列中最大和最小的元素。

      1.1 索引

        序列中的所有元素都有编号——从0开始递增,通常我们称这些编号为下标,即为索引(indexing)。你可以像下面这样使用编号来访问各个元素: 

        str1 = ['java','c++','C','C#','python']

        print(str1[0])     ——>  java
        print(str1[-1])     ——>  python

      1.2 切片

        除了使用索引来访问当个元素外,还可使用切片(slicing)来访问特定范围内的元素。为此,可使用两个索引,并用冒号分隔:

        str1 = ['java','c++','C','C#','python']

        print(str1[0:4])     ——>  ['java','c++','C','C#']

        如你所见,切片适用于提取序列的一部分,其中编号非常重要:第一个索引是包含的第一个元素的编号,但第二个索引是切片后余下的第一个元素的编号(这跟java的substring有点儿相似)。

        1.2.1 绝妙的简写

          str1 = ['java','c++','C','C#','python']

          print(str[:4])   ——>  ['java','c++','C','C#']
          print(str[-4:])   ——>  ['c++','C','C#','python']
          print(str[:])   ——>  ['java','c++','C','C#','python']
          print(str[-3:0])   ——>  []

          最后一个print为什么输出为 [] 呢,事实上,当切片的第一个索引指定的元素位于第二个索引指定的元素后面时,返回结果就为 空序列,即 []

        1.2.2 更大的步长

          在执行切片操作时,你显示或隐示的指定起点和终点,但通常省略另一个参数,即步长。在普通切片中,步长为1,即意味着从一个元素移到下一个元素。

          str1 = ['java','c++','C','C#','python']

          print(str[::2])   ——>  ['java','C','python']

          当然,步长不能为0,否则无法向前移动,但可以为负数,即从右向左提取元素。

          str1 = ['java','c++','C','C#','python']

          print(str[::-1])   ——>  ['python','C#','C','c++','java']

      1.3 序列相加

        可以使用加法运算符来拼接序列。(一般而言,不能拼接不同类型的序列)

        str1 = ['java','c++','C']

        str2 = ['C#','python']

        print(str1 + str2)  ——>  ['java','c++','C','C#','python']

      1.4 乘法

        将序列与数 x 相乘时,将重复这个序列 x 次来创建一个新序列。

        str1 = [0]

        print(str1 * 5)  ——> [0,0,0,0,0]

        print([None] * 5)  ——> [None,None,None,None,None]

        None 表示空

      1.5 成员资格

        要检查特定的值是否包含在序列中,可以使用运算符 in 。包含返回True,不包含时返回False。

        str1 = ['java','c++','C','C#','python']

        print('java' in str1)  ——>True

      1.6 长度、最小值和最大值

        内置函数lenminmax 很有用,其中函数len返回序列包含的元素个数,而min和max分别返回序列中最小值和最大值的元素。

        str1 = ['java','c++','C','C#','python']

        print(len(str1))  ——> 5

        print(min(str1))  ——> C
        print(max(str1))  ——> python

    2.列表:Python的主力

      2.1 函数list

        可将任何序列(如字符串)作为list的参数。list实际上是一个类,而不是函数。

        print(list('java'))  ——>['j','a','v','a']

        提示:要将字符列表转为字符串,可使用  ''.join(somelist)

      2.2 基本的列表操作

        可以对列表执行所有的标准序列操作,如索引、切片、拼接、相加和相乘。

        2.2.1 修改列表:给元素赋值

          使用索引表示法给特定位置的元素赋值,如 str1[0] = 'js'

        2.2.2 删除元素

          使用 del 语句删除元素。

          str1 =  ['java','c++','C','C#','python']

          del str1[0]

          print(str1)  ——>  ['c++','C','C#','python']

        2.2.3 给切片赋值

          使用切片赋值,可以同时给多个元素赋值,并且可将切片替换为长度与其不同的序列。

          str1 =  ['java','c++','C','C#','python']

          str1[0:1] = ['java','js']

          print(str1)  ——> ['java','js','c++','C','C#','python']

          使用切片赋值还可以在不替换原有元素的情况下 插入 新元素。

          str1 =  ['java','c++','C','C#','python']

          str1[1:1] = ['js']

          print(str1)  ——> ['java','js','c++','C','C#','python']

          还可以进行 删除 元素。

          str1 =  ['java','c++','C','C#','python']

          str1[1:4] = []

          print(str1)  ——> ['java','python']

      2.3 列表方法

        2.3.1 append

          方法append用于将一个对象附加到列表末尾。append方法不会返回修改后的新列表,而是直接修改旧列表。

          str1 = ['java','c++','C','C#','python']

          str1.append('js')

          print(str1)  ——> ['java','c++','C','C#','python','js']

        2.3.2 clear

          方法clear就地清空列表内容。如:str1.clear(),类似与切片赋值语句str1[:] = []

        2.3.3 copy

          方法copy赋值列表。(类似与java的深拷贝)

        2.3.4 count

          方法count计算指定的元素在列表中出现的次数。

          str1 = ['java','c++','C','C#','python','java']

          print(str1.count('java'))  ——> 2

        2.3..5 extend

          方法extends能够将多个值附加到列表末尾。主要用于使用一个列表来扩展另一个列表。

          str1 = ['java']

          str2 = ['js']

          print(str1.extend(str2))  ——> ['java','js']

        2.3.6 index

          方法index在列表中查找指定值 第一次出现的索引。如str.index('java')

        2.3.7 insert

          方法insert用于将一个对象插入列表。如str1.insert(0,'js')

          第一个参数表示插入后该元素的索引。

        2.3.8 pop

          方法pop从列表中删除一个元素(默认为最后一个元素),并返回这一元素。

          str1 = ['java','c++','C','C#','python']

          print(str1.pop())  ——> python

          print(str1.pop(0))  ——> java

          print(str1)  ——> ['c++','C','C#']

        2.3.9 remove

          方法remove用于删除第一个为指定值得元素。

          remove删除列表中不存在的元素会报错,所有一般要先用 x in somelist 进行判断验证后在使用remove方法

        2.3.10 reverse

          方法reverse按相反的顺序排列列表中的元素。如:str1.reverse()

        2.3.11 sort

          方法sort用于对列表就地排序。

          str1 = [4,2,3,1]

          print(x.sort())  ——> [1,2,3,4]

          函数sorted对列表进行排序,返回排序后的数组

          str1 = [4,2,3,1]

          str2 = sorted(str1)

          print(str2)  ——> [1,2,3,4]

        2.3.12 高级排序

          方法sort和sorted接受两个可选参数:key和reverse,这两个参数通常是按名称指定的,称为关键字参数。参数key类似于参数cmp:你将其设置为一个用于排序的函数。然而,不会直接使用这个函数来判断一个元素是否比另一个函数小,而是使用它来为每个元素创建一个键,再根据这些键对元素进行排序。

          比如,要根据长度对元素进行排序,可将参数key设置为函数len。

          str1 = ['java','c++','js']

          str1.sort(key = len)

          print(str1)  ——> ['js','c++','java']

          对于另一个关键字参数reverse,只需将其指定为一个真值(True和False),以指出是否要按相反的顺序对列表进行排序。

          str1 = ['java','c++','js']

          str1.sort(reverse = True)

          print(str1)  ——> ['js','c++','java']

    3 元祖:不可修改的序列

      与列表一样,元祖也是序列,唯一的差别在于元祖是不能修改的。(不能修改元祖中元素指定的地址)

      空元祖()

      只有一个元素的元祖(23,)       注意逗号必须要

      tuple函数,将一个序列作为参数,并将其转换为元祖。如果参数已经是元祖,就原封不动的返回。

      str1 = tuple(['java','js'])

      print(str1)  ——> ('java','js')

  • 相关阅读:
    学习前先认识一下MVC
    关于C#问号(?)的三个用处
    MVC上传图片示例
    在html中控制自动换行
    mvc中viewdata 和viewbag的区别
    eclipse 下找不到或无法加载主类的解决办法
    js实现checkbox全选与反选
    web组件新学--layer
    获取注册表最高权限
    pstools使用教程
  • 原文地址:https://www.cnblogs.com/www-123456/p/10431499.html
Copyright © 2011-2022 走看看