函数、列表

第三章——函数

  • None表示没有值,是NoneType数据类型的唯一值。print的返回值就是None

  • print()函数有可选的变元endsep,分别指定在参数末尾打印什么,在参数之间打印什么来隔开它们

    例如:

    end

    1
    2
    print('hello')
    print('word')
    1
    2
    print('hello',end=' ')
    print('word')

    输出分别为:

    1
    2
    hello
    word
    1
    hello word

    sep

    1
    2
    3
    4
    >>> print('a','b','c')
    a b c
    >>> print('a','b','c',sep=',')
    a,b,c
  • 全局作用域中的代码不能使用局部变量,局部作用域可以访问全局变量

  • 在不同的作用域中,可以用相同的名字命名不同的变量

  • global在局部作用域中修改全局变量

    例如:

    1
    2
    3
    4
    5
    6
    7
    def spam():
    global eggs
    eggs='spam'
    eggs='global'
    print(eggs)
    spam()
    print(eggs)

    在第一次输出的时候,由于eggs未被修改,所以输出global,第二次输出的时候,因为经过了spam,eggs变成了spam,所以输出为spam

异常处理

出现的错误可以用try...except来处理。将可能出错的语句放在try子句中,如果错误发生,程序执行转到接下来的except子句开始处

第四章——列表

  • 列表的负数下标表示列表中的倒数第几个元素,如:num[-1]表示num列表中的最后一个元素

  • len()获取列表的长度,方法和字符串相同,返回值为列表中值的个数

    例如:

    1
    2
    3
    >>> arr=['acb','d','e']
    >>> len(arr)
    3
  • 改变列表中元素的值时,直接找到对应的下标,进行赋值即可

切片

切片得到的是一个新的列表,而不是一个值。

在一个切片中,第一个整数表示切片开始出的下标,第二个整数表示结束的下标

第一个整数默认为$0$,第二个整数默认为列表中最后一个元素的下标

例如:

1
2
3
4
5
6
7
8
9
>>> arr=['a','b','c','d','e']
>>> arr[:]
['a', 'b', 'c', 'd', 'e']
>>> arr[3:]
['d', 'e']
>>> arr[:3]
['a', 'b', 'c']
>>> arr[1:3]
['b', 'c']

列表的连接和复制

+运算符可以连接两个列表;*运算符可以实现列表的复制

例如:

1
2
3
4
>>> [1,2,3]+['a','b','c']
[1, 2, 3, 'a', 'b', 'c']
>>> [1,2,3,4]*2
[1, 2, 3, 4, 1, 2, 3, 4]

列表的使用

  • for i in []表示i从列表的第一个元素开始遍历数组,i对应的值为当前元素的值

    例如:

    1
    2
    for i in [1,4,2]:
    print(i)

    输出结果为:

    1
    2
    3
    1
    4
    2
  • 如果想要根据获得当前遍历元素的下标,可以先用len()获得列表的长度,然后用range()来遍历下标,arr[i]来访问元素

  • 利用innot in可以快速确定元素是否在列表中,返回值为bool类型

    例如:

    1
    2
    3
    4
    >>> 'd' in ['a','b','c']
    False
    >>> 'c' in ['a','b','c']
    True

列表中的一些方法

  • index()用来查找某个元素是否在列表中,如果在列表中,返回该元素在列表中第一次出现的下标,否则,会报ValueError

    例如:

    1
    2
    3
    4
    5
    6
    7
    >>> arr=['a','a','b']
    >>> arr.index('a')
    0
    >>> arr.index('d')
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    ValueError: 'd' is not in list
  • append()insert()都可以向列表中加入元素,append()只能把元素加入到列表的尾部,insert()则可以向列表中的任意位置加入元素,insert()的第一个整数表示下标,如果该值超过当前列表的长度,那么元素将会被加到列表的末尾

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> arr=['a','b']
    >>> arr.append('c')
    >>> arr
    ['a', 'b', 'c']
    >>> arr.insert(2,'d')
    >>> arr
    ['a', 'b', 'd', 'c']
    >>> arr.insert(10,'e')
    >>> arr
    ['a', 'b', 'd', 'c', 'e']
  • remove()用来删除列表中第一次出现的元素,如果该元素不在列表中,则会ValueError

    1
    2
    3
    4
    5
    6
    7
    8
    >>> arr=['a','b']
    >>> arr.remove('a')
    >>> arr
    ['b']
    >>> arr.remove('a')
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    ValueError: list.remove(x): x not in list
  • sort()用来对列表进行排序,默认为按ASCII码升序排序,sort(reverse=True)可以将排序改为降序,sort(key=str.lower)将排序按照普通字典序排序

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> arr=['a','A','b']
    >>> arr.sort()
    >>> arr
    ['A', 'a', 'b']
    >>> arr=['a','A','b','B']
    >>> arr.sort()
    >>> arr
    ['A', 'B', 'a', 'b']
    >>> arr.sort(reverse=True)
    >>> arr
    ['b', 'a', 'B', 'A']
    >>> arr.sort(key=str.lower)
    >>> arr
    ['a', 'A', 'b', 'B']

字符串和元组

  • 字符串和元组都是不可改变的

  • 字符串和元组访问元素的方式和列表一样,注意:元组输入要用()而不是[]

  • 如果元组中只有一个元素,在该元素后面加一个,来告诉程序这是一个元组

    例如:

    1
    2
    3
    4
    >>> type((123,))
    <class 'tuple'>
    >>> type((123))
    <class 'int'>
  • 字符串、列表、元组可以相互转换

    1
    2
    3
    4
    5
    6
    >>> tuple(['a','b','c'])
    ('a', 'b', 'c')
    >>> list(('a','b','c'))
    ['a', 'b', 'c']
    >>> list('abc')
    ['a', 'b', 'c']
  • 如果将列表直接赋值给另一个列表,那么改变这两个列表中的其中一个,这两个列表均会被改变。原因是在对列表进行赋值的时候,只是将列表中的元素给了另一个列表,而不是列表本身。两个列表均指向同一个列表,所以当一个列表被修改时,指向的列表会被改变,从而两个列表的元素均会变化。

  • 使用copy模块里的copy()deepcopy()函数可以实现对列表本身的复制,

    1
    2
    3
    4
    5
    6
    7
    8
    >>> import copy
    >>> arr1=['a','b','c']
    >>> arr2=copy.copy(arr1)
    >>> arr2[1]='d'
    >>> arr2
    ['a', 'd', 'c']
    >>> arr1
    ['a', 'b', 'c']

本文标题:函数、列表

文章作者:执念

发布时间:2019年01月23日 - 14:01

最后更新:2019年02月14日 - 17:02

原始链接:https://blog.wzy1999.wang/learn/pyl-2/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------
0%