为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
初识Python_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

初识Python

廖雪峰 移动开发工程师
难度入门
时长 5小时 0分
  • 字符串 'xxx'和 Unicode字符串 u'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

    >>> 'ABCDEFG'[:3]
    'ABC'
    >>> 'ABCDEFG'[-3:]
    'EFG'
    >>> 'ABCDEFG'[::2]
    'ACEG'

    在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

    字符串有个方法 upper() 可以把字符变成大写字母:

    >>> 'abc'.upper()
    'ABC'


    查看全部
    0 采集 收起 来源:对字符串切片

    2019-09-17

  • 对于list,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试:

    >>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
    
    >>> L[-2:]
    ['Bart', 'Paul']
    
    >>> L[:-2]
    ['Adam', 'Lisa']
    
    >>> L[-3:-1]
    ['Lisa', 'Bart']
    
    >>> L[-4:-1:2]
    ['Adam', 'Bart']

    记住倒数第一个元素的索引是-1。倒序切片包含起始索引,不包含结束索引。

    任务

    利用倒序切片对 1 - 100 的数列取出:

    * 最后10个数;

    * 最后10个5的倍数。

    5的倍数可以用 ::5 取出,要确定起始索引。

    参考代码:

    L = range(1, 101)
    print L[-10:]
    print L[-46::5]

    等差数列,an=a1+(n-1)*d求倒数第十个数an=100+(10-1)*-5=55

    55-101=-46

    查看全部
    0 采集 收起 来源:倒序切片

    2019-09-17

  • 取一个list的部分元素是非常常见的操作。

    取前3个元素,应该怎么做?

    笨办法:

    >>> [L[0], L[1], L[2]]
    ['Adam', 'Lisa', 'Bart']

    之所以是笨办法是因为扩展一下,取前N个元素就没辙了。

    取前N个元素,也就是索引为0-(N-1)的元素,可以用循环:

    >>> r = []
    >>> n = 3
    >>> for i in range(n):
    ...     r.append(L[i])
    ... 
    >>> r
    ['Adam', 'Lisa', 'Bart']

    对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。

    对应上面的问题,取前3个元素,用一行代码就可以完成切片:

    >>> L[0:3]
    ['Adam', 'Lisa', 'Bart']

    L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。

    如果第一个索引是0,还可以省略。

    只用一个 : ,表示从头到尾。因此,L[:]实际上复制出了一个新list。

    切片操作还可以指定第三个参数:

    >>> L[::2]
    ['Adam', 'Bart']

    第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。

    把list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple。

    range()函数可以创建一个数列:

    >>> range(1, 101)
    [1, 2, 3, ..., 100]


    查看全部
    0 采集 收起 来源:对list进行切片

    2019-09-17

  • 如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数:

    def fn(*args):
        print args

    可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数:

    >>> fn()
    ()
    >>> fn('a')
    ('a',)
    >>> fn('a', 'b')
    ('a', 'b')
    >>> fn('a', 'b', 'c')
    ('a', 'b', 'c')

    Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。

    定义可变参数的目的也是为了简化调用。假设我们要计算任意个数的平均值,就可以定义一个可变参数:

    def average(*args):
        ...

    这样,在调用的时候,可以这样写:

    >>> average()
    0
    >>> average(1, 2)
    1.5
    >>> average(1, 2, 2, 3, 4)
    2.4

    任务

    请编写接受可变参数的 average() 函数。

    可变参数 args 是一个tuple,当0个参数传入时,args是一个空tuple。

    参考代码:

    def average(*args):
        sum = 0.0
        if len(args) == 0:
            return sum
        for x in args:
            sum = sum + x
        return sum / len(args)
    print average()
    print average(1, 2)
    print average(1, 2, 2, 3, 4)


    查看全部
  • 注意: Python代码的缩进规则。具有相同缩进的代码被视为代码块,上面的3,4行 print 语句就构成一个代码块(但不包括第5行的print)。如果 if 语句判断为 True,就会执行这个代码块。

    缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。

    注意: if 语句后接表达式,然后用:表示代码块开始。

    如果你在Python交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车


    查看全部
    0 采集 收起 来源:Python之if语句

    2019-09-17

  • tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

    理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。


    查看全部
  • L[::]:前一个参数表示从哪个索引开始取
    如:L[5:]:表示从第6个数开始取
    第二位参数表示取到哪位数为止,
    如:L[:50:]:表示取前50个数
    第三位参数表示每个数去一个
    如:L[::2]:表示每三个数去一个元素


    查看全部
    0 采集 收起 来源:对list进行切片

    2019-09-17

  • >>> t = (1)
    >>> print t
    1

    好像哪里不对!t 不是 tuple ,而是整数1。为什么呢?

    因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。

    正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义:

    >>> t = (1,)
    >>> print t
    (1,)


    查看全部
  • tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。

    同样是表示班里同学的名称,用tuple表示如下:

    >>> t = ('Adam', 'Lisa', 'Bart')

    创建tuple和创建list唯一不同之处是用( )替代了[ ]

    现在,这个 t 就不能改变了,tuple没有 append()方法,也没有insert()和pop()方法。所以,新同学没法直接往 tuple 中添加,老同学想退出 tuple 也不行。

    获取 tuple 元素的方式和 list 是一模一样的,我们可以正常使用 t[0],t[-1]等索引方式访问元素,但是不能赋值成别的元素

    查看全部
  • 定义函数的时候,还可以有默认参数。

    例如Python自带的 int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数:

    int()函数的第二个参数是转换进制,如果不传,默认是十进制 (base=10),如果传了,就用传入的参数。

    可见,函数的默认参数的作用是简化调用,你只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数来覆盖默认参数值。

    我们来定义一个计算 x 的N次方的函数:

    def power(x, n):
        s = 1
        while n > 0:
            n = n - 1
            s = s * x
        return s

    假设计算平方的次数最多,我们就可以把 n 的默认值设定为 2:

    def power(x, n=2):
        s = 1
        while n > 0:
            n = n - 1
            s = s * x
        return s

    这样一来,计算平方就不需要传入两个参数了。

    由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面。

    # OK:
    def fn1(a, b=1, c=2):
        pass
    # Error:
    def fn2(a=1, b):
        pass

    任务

    请定义一个 greet() 函数,它包含一个默认参数,如果没有传入,打印 'Hello, world.',如果传入,打印 'Hello, xxx.'

    默认参数的默认值可以设定为'world'

    def greet(name='world'):
        print 'Hello, ' + name + '.'
    greet()
    greet('Bart')


    查看全部
  • pop()方法总是删掉list的最后一个元素,并且它还返回这个元素,所以我们执行 L.pop() 后,会打印出 'Paul'。

    要把Paul踢出list,我们就必须先定位Paul的位置。由于Paul的索引是2,因此,用 pop(2)把Paul删掉:

    查看全部
  • append()总是把新的元素添加到 list 的尾部。

    insert()方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素:

    查看全部
  • 1. 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。

    2. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。


    查看全部
  • 默认参数里的值,出现在没有传入参数的情况下

    查看全部
  • print r'''"To be, or not to be": that is the question.
    Whether it's nobler in the mind to suffer.'''

    查看全部

举报

0/150
提交
取消
课程须知
如果您了解程序设计的基本概念,会简单使用命令行,了解中学数学函数的概念,那么对课程学习会有很大的帮助,让您学起来得心应手,快速进入Python世界。
老师告诉你能学到什么?
通过本课程的学习,您将学会搭建基本的Python开发环境,以函数为基础编写完整的Python代码,熟练掌握Python的基本数据类型以及list和dict的操作。
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!