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

初识Python

廖雪峰 移动开发工程师
难度入门
时长 5小时 0分
  • 汉诺塔: 函数 move(n, a, b, c) 的定义是将 n 个圆盘从 a 借助 b 移动到 c。 参考代码: def move(n, a, b, c): if n ==1: print a, '-->', c return move(n-1, a, c, b) print a, '-->', c move(n-1, b, a, c) move(4, 'A', 'B', 'C')
    查看全部
  • Unicode字符串 1、Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示 2、如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释 # -*- coding: utf-8 -*- 目的是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++ 另存为... 并选择UTF-8格式保存。
    查看全部
  • L = ['Adam', 'Lisa', 'Bart', 'Paul'] for index, name in enumerate(L): print index+1, '-', name
    查看全部
    0 采集 收起 来源:索引迭代

    2016-08-04

  • 任务 zip()函数可以把两个 list 变成一个 list: >>> zip([10, 20, 30], ['A', 'B', 'C']) [(10, 'A'), (20, 'B'), (30, 'C')] 在迭代 ['Adam', 'Lisa', 'Bart', 'Paul'] 时,如果我们想打印出名次 - 名字(名次从1开始),请考虑如何在迭代中打印出来。 提示:考虑使用zip()函数和range()函数 ?不会了怎么办 range(1, ?) 可以创建出起始为 1 的数列。 参考代码: L = ['Adam', 'Lisa', 'Bart', 'Paul'] for index, name in zip(range(1, len(L)+1), L): print index, '-', name
    查看全部
    0 采集 收起 来源:索引迭代

    2018-03-22

  • if while 后一定加: break continue 后面不加:
    查看全部
  • print [x * (x+1) for x in range(1,100)[::2]] print [x*y for x,y in zip(range(1,100,2),range(2,100,2))] print [x * (x+1) for x in range(1,100,2)] 这个python太灵活了,太多运算规则了。
    查看全部
    1 采集 收起 来源:生成列表

    2016-08-04

  • 记住倒数第一个元素的索引是-1。倒序切片包含起始索引,不包含结束索引。
    查看全部
    0 采集 收起 来源:倒序切片

    2016-08-04

  • 任务 利用倒序切片对 1 - 100 的数列取出: * 最后10个数; * 最后10个5的倍数。 ?不会了怎么办 5的倍数可以用 ::5 取出,要确定起始索引。 参考代码: L = range(1, 101) print L[-10:] print L[-46::5] L = range(1, 101) print L[-10:] print L[4::5][-10:]
    查看全部
    0 采集 收起 来源:倒序切片

    2016-08-04

  • 倒序切片 对于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]
    查看全部
    0 采集 收起 来源:倒序切片

    2018-03-22

  • 对list进行切片 取一个list的部分元素是非常常见的操作。比如,一个list如下: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] 取前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[:3] ['Adam', 'Lisa', 'Bart'] 也可以从索引1开始,取出2个元素出来: >>> L[1:3] ['Lisa', 'Bart'] 只用一个 : ,表示从头到尾: >>> L[:] ['Adam', 'Lisa', 'Bart', 'Paul'] 因此,L[:]实际上复制出了一个新list。 切片操作还可以指定第三个参数: >>> L[::2] ['Adam', 'Bart'] 第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。 把list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple。 任务 range()函数可以创建一个数列: >>> range(1, 101) [1, 2, 3, ..., 100] 请利用切片,取出: 1. 前10个数; 2. 3的倍数; 3. 不大于50的5的倍数。 ?不会了怎么办 要取出3, 6, 9可以用::3的操作,但是要确定起始索引。 参考代码: L = range(1, 101) print L[:10] 【注意不是11,是10!】 print L[2::3] 【注意第一个数字填2,若不填,则出错】 print L[4:50:5] 【注意第一个数字填4,与上同理,第二个数字是50不是51,与第一行同理】
    查看全部
    0 采集 收起 来源:对list进行切片

    2018-03-22

  • 任务 sum()函数接受一个list作为参数,并返回list所有元素之和。请计算 1*1 + 2*2 + 3*3 + ... + 100*100。 L = [] for x in range(1,101): L.append(x*x); print sum(L) 【注意】for x in range(1,101):是101而不是100,和其他语言中不一样!!!!
    查看全部
  • 更新set 由于set存储的是一组不重复的无序元素,因此,更新set主要做两件事: 一是把新的元素添加到set中,二是把已有元素从set中删除。 添加元素时,用set的add()方法: >>> s = set([1, 2, 3]) >>> s.add(4) >>> print s set([1, 2, 3, 4]) 如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了: >>> s = set([1, 2, 3]) >>> s.add(3) >>> print s set([1, 2, 3]) 删除set中的元素时,用set的remove()方法: >>> s = set([1, 2, 3, 4]) >>> s.remove(4) >>> print s set([1, 2, 3]) 如果删除的元素不存在set中,remove()会报错: >>> s = set([1, 2, 3]) >>> s.remove(4) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 4 所以用add()可以直接添加,而remove()前需要判断。
    查看全部
    0 采集 收起 来源:对list进行切片

    2018-03-22

  • 遍历set 由于 set 也是一个集合,所以,遍历 set 和遍历 list 类似,都可以通过 for 循环实现。 直接使用 for 循环可以遍历 set 的元素: >>> s = set(['Adam', 'Lisa', 'Bart']) >>> for name in s: ... print name ... Lisa Adam Bart 注意: 观察 for 循环在遍历set时,元素的顺序和list的顺序很可能是不同的,而且不同的机器上运行的结果也可能不同。 任务 请用 for 循环遍历如下的set,打印出 name: score 来。 s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)]) ?不会了怎么办 注意到set的元素是tuple,因此 for 循环的变量被依次赋值为tuple。 参考代码: s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)]) for x in s: print x[0] + ':', x[1]
    查看全部
    0 采集 收起 来源:对list进行切片

    2018-03-22

  • set的特点 set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。 set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。 最后,set存储的元素也是没有顺序的。 set的这些特点,可以应用在哪些地方呢? 星期一到星期日可以用字符串'MON', 'TUE', ... 'SUN'表示。 假设我们让用户输入星期一至星期日的某天,如何判断用户的输入是否是一个有效的星期呢? 可以用 if 语句判断,但这样做非常繁琐: x = '???' # 用户输入的字符串 if x!= 'MON' and x!= 'TUE' and x!= 'WED' ... and x!= 'SUN': print 'input error' else: print 'input ok' 注意:if 语句中的...表示没有列出的其它星期名称,测试时,请输入完整。 如果事先创建好一个set,包含'MON' ~ 'SUN': weekdays = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN']) 再判断输入是否有效,只需要判断该字符串是否在set中: x = '???' # 用户输入的字符串 if x in weekdays: print 'input ok' else: print 'input error' 这样一来,代码就简单多了。
    查看全部
    0 采集 收起 来源:对list进行切片

    2016-08-04

  • 任务 由于上述set不能识别小写的名字,请改进set,使得 'adam' 和 'bart'都能返回True。 ?不会了怎么办 在list中,需要把两个名字同时放进去。 参考代码: s = set(['Adam', 'adam', 'Lisa', 'lisa', 'Bart', 'bart', 'Paul', 'paul']) print 'adam' in s print 'bart' in s L=['Adam', 'Lisa', 'Bart', 'Paul'] M=[] for x in L: y=x.lower() M.append(y) s = set(M) print 'adam' in s print 'bart' in s 这种大写的就是false: s = set([name.lower() for name in ['Adam', 'Lisa', 'Bart', 'Paul']]) print 'adam' in s print 'bart' in s
    查看全部
    0 采集 收起 来源:Python之 访问set

    2016-08-04

举报

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

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