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

初识Python

廖雪峰 移动开发工程师
难度入门
时长 5小时 0分
  • 我们还是用一个list按分数从高到低表示出班里的3个同学:>>> L = ['Adam', 'Lisa', 'Bart']
    这时,老师说,请分数最低的同学站出来。要写代码完成这个任务,我们可以先数一数这个 list,发现它包含3个元素,因此,最后一个元素的索引是2:>>> print L[2]Bart有没有更简单的方法?有!Bart同学是最后一名,俗称倒数第一,所以,我们可以用 -1 这个索引来表示最后一个元素:>>> print L[-1]BartBart同学表示躺枪。类似的,倒数第二用 -2 表示,倒数第三用 -3 表示,倒数第四用 -4 表示:>>> print L[-2]Lisa>>> print L[-3]Adam>>> print L[-4]Traceback (most recent call last):  File "<stdin>", line 1, in <module>IndexError: list index out of rangeL[-4] 报错了,因为倒数第四不存在,一共只有3个元素。使用倒序索引时,也要注意不要越界。

    查看全部

  • 如果要表示多行字符串,可以用'''...'''表示:

    '''Line 1
    Line 2
    Line 3'''

    上面这个字符串的表示方法和下面的是完全一样的:

    'Line 1\nLine 2\nLine 3'

    还可以在多行字符串前面添加 r ,把这个多行字符串也变成一个raw字符串:

    r'''Python is created by "Guido".
    It is free and easy to learn.
    Let's start learn Python in imooc!'''

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

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

    所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。


    查看全部
  • 9.1 什么是迭代

    在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。

    在Python中,迭代是通过 for ... in 来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的,比如Java代码:

    for (i=0; i<list.length; i++) {     n = list[i]; }

    可以看出,Python的for循环抽象程度要高于Java的for循环。

    因为 Python 的 for循环不仅可以用在list或tuple上,还可以作用在其他任何可迭代对象上。

    因此,迭代操作就是对于一个集合,无论该集合是有序还是无序,我们用 for 循环总是可以依次取出集合的每一个元素。

    注意: 集合是指包含一组元素的数据结构,我们已经介绍的包括: 1. 有序集合:list,tuple,str和unicode; 2. 无序集合:set 3. 无序集合并且具有 key-value 对:dict

    而迭代是一个动词,它指的是一种操作,在Python中,就是 for 循环。

    迭代与按下标访问数组最大的不同是,后者是一种具体的迭代实现方式,而前者只关心迭代结果,根本不关心迭代内部是如何实现的。

    任务

    请用for循环迭代数列 1-100 并打印出7的倍数。

    for i in range(1,100):

        if i%7 == 0:

            print i

    9.2 迭代索引

    Python中,迭代永远是取出元素本身,而非元素的索引。

    对于有序集合,元素确实是有索引的。有的时候,我们确实想在 for 循环中拿到索引,怎么办?

    方法是使用 enumerate() 函数:

    >>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
    >>> for index, name in enumerate(L):...     print index, '-', name
    ... 
    0 - Adam
    1 - Lisa
    2 - Bart
    3 - Paul

    使用 enumerate() 函数,我们可以在for循环中同时绑定索引index和元素name。但是,这不是 enumerate() 的特殊语法。实际上,enumerate() 函数把:

    ['Adam', 'Lisa', 'Bart', 'Paul']

    变成了类似:

    [(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]

    因此,迭代的每一个元素实际上是一个tuple:

    for t in enumerate(L):
        index = t[0]
        name = t[1]
        print index, '-', name

    如果我们知道每个tuple元素都包含两个元素,for循环又可以进一步简写为:

    for index, name in enumerate(L):
        print index, '-', name

    这样不但代码更简单,而且还少了两条赋值语句。

    可见,索引迭代也不是真的按索引访问,而是由 enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身。

    任务

    zip()函数可以把两个 list 变成一个 list:

    >>> zip([10, 20, 30], ['A', 'B', 'C'])
    [(10, 'A'), (20, 'B'), (30, 'C')]

    在迭代 ['Adam', 'Lisa', 'Bart', 'Paul'] 时,如果我们想打印出名次 - 名字(名次从1开始),请考虑如何在迭代中打印出来。

    提示:考虑使用zip()函数和range()函数

    L = ['Adam', 'Lisa', 'Bart', 'Paul']

    for index, name in zip(range(1,5),L):

        print index, '-', name


    查看全部
    0 采集 收起 来源:什么是迭代

    2019-10-29

  • 布尔~
    查看全部
  • set

    set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。

    创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素:

    >>> s = set(['A', 'B', 'C'])

    可以查看 set 的内容:

    >>> print s
    set(['A', 'C', 'B'])

    请注意,上述打印的形式类似 list, 但它不是 list,仔细看还可以发现,打印的顺序和原始 list 的顺序有可能是不同的,因为set内部存储的元素是无序的。

    因为set不能包含重复的元素,所以,当我们传入包含重复元素的 list 会怎么样呢?

    >>> s = set(['A', 'B', 'C', 'C'])
    >>> print s
    set(['A', 'C', 'B'])
    >>> len(s)
    3

    结果显示,set会自动去掉重复的元素,原来的list有4个元素,但set只有3个元素。


    查看全部
  • 用 for 循环遍历dict 输出key-value

    通过d[key]获取对应的value。

    参考代码:

    d= {
        'Adam': 95,
        'Lisa': 85,
        'Bart': 59
    }
    for key in d:
        print key + ':', d[key]


    查看全部
  • dict 中添加新 Key-value

    要把新同学'Paul'的成绩 72 加进去,用赋值语句:

    >>> d['Paul'] = 72


    查看全部
    0 采集 收起 来源:Python更新dict

    2019-10-28

  • dict的特点

    1、dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。

    dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。

    2、dict的第二个特点就是存储的key-value序对是没有顺序的!

    3、

    dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。

    可以试试用list作为key时会报什么样的错误。

    不可变这个限制仅作用于key,value是否可变无所谓:

    {
        '123': [1, 2, 3],  # key 是 str,value是list
        123: '123',  # key 是 int,value 是 str
        ('a', 'b'): True  # key 是 tuple,并且tuple的每个元素都是不可变对象,value是 boolean}


    查看全部
  • 访问dict

    要避免 KeyError 发生,有两个办法:

    一是先判断一下 key 是否存在,用 in 操作符:

    if 'Paul' in d:
        print d['Paul']

    如果 'Paul' 不存在,if语句判断为False,自然不会执行 print d['Paul'] ,从而避免了错误。

    二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:

    >>> print d.get('Bart')
    59
    >>> print d.get('Paul')
    None


    查看全部
    0 采集 收起 来源:Python之访问dict

    2019-10-28

  • dict

    用 dict 表示“名字”-“成绩”的查找表如下:

    d = {
        'Adam': 95,
        'Lisa': 85,
        'Bart': 59
    }

    我们把名字称为key,对应的成绩称为value,dict就是通过 key 来查找 value。

    花括号 {} 表示这是一个dict,然后按照 key: value, 写出来即可。最后一个 key: value 的逗号可以省略。

    由于dict也是集合,len() 函数可以计算任意集合的大小:

    >>> len(d)
    3

    注意: 一个 key-value 算一个,因此,dict大小为3。


    查看全部
  • http://img1.sycdn.imooc.com//5db6d9700001709d03780135.jpg

    有关中文字符串的笔记


    查看全部
  • http://img1.sycdn.imooc.com//5db6d8a30001f3b803730174.jpg

    python 编码笔记


    查看全部
  • 10.1 for循环生成列表

    要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],可以用range(1, 11),

    要生成list [1x1, 2x2, 3x3, ..., 10x10], 可以用 [x * x for x in range(1, 11)],

    要生成list [1x2, 3x4, 5x6, 7x8, ..., 99x100],可以用[x*(x+1) for x in range(1,101,2)]

    10.2,复杂表达式

    把字典变成一个list

    d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }

    def generate_tr(name, score):

            return (name, score)

    L = [generate_tr (name, score) for name, score in d.iteritems()]

    print L

    [('Lisa', 85), ('Adam', 95), ('Bart', 59)]

    10.3    条件过滤

    列表生成式的 for 循环后面还可以加上 if 判断。

    例如:

    >>> [x * x for x in range(1, 11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

    如果我们只想要偶数的平方,不改动 range()的情况下,可以加上 if 来筛选:

    >>> [x * x for x in range(1, 11) if x % 2 == 0] [4, 16, 36, 64, 100]

    有了 if 条件,只有 if 判断为 True 的时候,才把循环的当前元素添加到列表中。

    任务

    请编写一个函数,它接受一个 list,然后把list中的所有字符串变成大写后返回,非字符串元素将被忽略。

    提示:

    1. isinstance(x, str) 可以判断变量 x 是否是字符串;

    2. 字符串的 upper() 方法可以返回大写的字母。

    def toUppers(L):

        return [x. upper() for x in L if isinstance(x, str)]

    print toUppers(['Hello', 'world', 101])

    >>> ['HELLO', 'WORLD']
    
    
    for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。
    对于字符串 'ABC' 和 '123',可以使用两层循环,生成全排列:
    >>> [m + n for m in 'ABC' for n in '123']
    ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
     翻译成循环代码就像下面这样:
     L = []for m in 'ABC':
        for n in '123':
            L.append(m + n)

    任务

    利用 3 层for循环的列表生成式,找出对称的 3 位数。例如,121 就是对称数,因为从右到左倒过来还是 121。

     

    >>> [x*100+y*10+z for x in range(1,10) for y in range(0,10) for z in range(1,10) if x==z]
    查看全部
    0 采集 收起 来源:生成列表

    2019-10-29

  • # -*- coding: UTF-8 -*-   

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

    2019-10-28

举报

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

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