Advertisement

Python笔记——壹

阅读量:

做个Python笔记,这些容易健忘啊,总结一下:
1,在python代码第一行加入下面这一句 ,中文就可识别了,程序运行正常。

复制代码
    #coding=utf-8

2,list是一个可变的有序表,添加元素和删除元素分别是

复制代码
    classmates = ['Michael', 'Bob', 'Tracy']
    classmates.append('Adam') #['Michael', 'Bob', 'Tracy', 'Adam']
    classmates.insert(1, 'Jack') #['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
    classmates.pop() #['Michael', 'Jack', 'Bob', 'Tracy']

3,元组tuple初始化后不能修改。

复制代码
     t = (1,)  #只有一个元素时避免歧义,加一个逗号代表元组

4,字典dict使用键-值(key-value)存储,无序

复制代码
    d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
    d.pop('Bob') #删除元素,{'Michael': 95, 'Tracy': 85}

5,set和dict类似,也是一组key的集合,但不存储value,元素无重复无序。

复制代码
    s = set([1, 1, 2, 2, 3, 3]) #{1, 2, 3}
    s.add(4) #添加元素
    s.remove(4) #删除元素
  1. str被视为不可变对象,在Python中无法对其进行修改;而列表(list)则是可变的对象,在操作中可以进行更新和修改。Python函数返回多个值的方式即为返回一个元组。
  2. 当使用星号(*)符号时,在函数定义中就可以将参数设置为可变的;这样做的效果就相当于将函数参数转换为一个可迭代的对象。
复制代码
    def calc(numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
    #调用的时候,需要先组装出一个list或tuple
    >>> calc([1, 2, 3])
    14
    >>> calc((1, 3, 5, 7))
    84

#只需要加一个*号,就可以将函数参数变成可变参数

复制代码
    def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
    >>> calc(1, 2, 3)
    14
    >>> calc(1, 3, 5, 7)
    84
    #*nums表示把nums这个list的所有元素作为可变参数传进去。
    >>> nums = [1, 2, 3]
    >>> calc(*nums)
    14

The function now accepts any number of keyword arguments, which are automatically collected into a dictionary structure.

复制代码
    def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)
    >>> person('Bob', 35, city='Beijing')
    name: Bob age: 35 other: {'city': 'Beijing'}
    # **extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数
    >>> extra = {'city': 'Beijing', 'job': 'Engineer'}
    >>> person('Jack', 24, **extra)

字典d={key:value}
对于字典d中的每一个键key,默认会遍历其键值对key。
如果需要仅遍历键值对中的键key,则可以使用for循环直接提取键key进行操作。
若希望同时获取键key及其对应的值value,则可以采用for-in循环结合字典values()方法来进行操作。

10,列表生成式

复制代码
    >>> [x * x for x in range(1, 11) if x % 2 == 0]
    [4, 16, 36, 64, 100]
    >>> [x for x in range(1, 11) if x % 2 == 0]
    [2, 4, 6, 8, 10]

11,生成器generator
在结构上,L与g的主要区别在于它们分别使用了方括号[]和圆括号()作为最外层的容器。其中,L是一个列表数据类型,而g则是一个生成器对象。通过调用next()函数可以获得generator中的下一个元素值。

复制代码
    >>> L = [x * x for x in range(10)] #生成列表
    >>> L
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    >>> g = (x * x for x in range(10)) #生成生成器
    >>> g
    <generator object <genexpr> at 0x1022ef630>

另一种为生成器(generator)的方法来定义生成器(generator)。若在一个函数定义中使用了yield关键字,则该函数不再是传统意义上的普通函数,并被归类为生成器(generator):

复制代码
    def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1
    return 'done'

在for循环中直接操作的对象被称为可迭代对象:Iterable。可通过isinstance()函数判断一个对象是否属于Iterable类别。

复制代码
    >>> from collections.abc import Iterable
    >>> isinstance([], Iterable)
    True

全部评论 (0)

还没有任何评论哟~