首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

hand first python选读(一)

一. 列表(list)

基本操作

比如说我要整理一个近期热映的电影列表:

列表很像数组,但功能超越数组。列表都是从0开始的,python中列表无需事先声明类型。

从列表后面加上一个新的元素,比如说加个“无名之辈”,是 方法。

删除列表最后一个元素: 方法。

两个列表相衔接,用的是 方法。

我想在某个条件下删除一个元素,同时加上一个元素,涉及 和 方法。

python中列表可以放任何类型的数据。

循环

处理列表需要各种迭代方法。是时候用for...in循环了

同理while循环也是可以的

一般都推荐for循环

列表当然也能嵌套,我们可以用 方法检测之:

if else

如果我想把这个嵌套列表单独打印出来,可以这么操作

函数与递归:多层嵌套的扁平化

给这个列表再加一层:

用上节来处理多层嵌套,会导致大量重复而不优雅的代码。

首先使用函数让代码更加优雅:

为了巩固所学:再举一个通过递归生成斐波拉契数列第N项的例子:

斐波那契数列(Fibonacci sequence),指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(3)=2,F(n)=F(n-1)+F(n-2)(n>=4,n∈N*)

虽然很简洁,但是n>100就报错了。因为python的递归支持100层

二. 函数

模块化开发

把上一章的flatten函数单独用base.py存起来,它就打包为一个模块。

除了之前提到的,用 注释,还可以用三重 作为python的注释。

再同一个命名文件夹下重新创建一个app.py文件:

列表更多的内置方法

先学习以下内置的方法(BIF)

list() :工厂函数,创建一个新的列表

next() : 返回一个迭代结构(如列表)中的下一项

id() :返回一个数据对象的唯一标识(内存地址)

int() :将一个字符串如 转化为

range() :返回一个迭代器,根据需要生成一个指定范围的数字

enumerate() :把单个数组创建为带有索引号的成对列表

升级你的模块:参数

扁平化打印只能看到每个数组最小的元素,考虑用缩进来体现彼此的关系。那怎么做呢?

提示:用range方法实现。

事实上在打印时只需要知道每次迭代的深度,就好处理了。因此需要引入第二个参数

效果出来了。但还有不满意的地方。如果要兼容过去的写法怎么办?

调用时默认就是不缩进。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181209G10VAJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券