python 下一行等于上一行、加1_python notebook1

# Python

> 阅读的是《Python:编程从入门到实践》一书以及[廖雪峰官网的python教程](Python教程),自学记录的一些东西,比较杂乱。

### 数据类型(共8种,list dict tuple见下面)

- 整数int:对于很大的数,例如10000000000,很难数清楚0的个数。Python允许在数字中间以_分隔,因此,写成10_000_000_000和10000000000是完全一样的。

- 浮点数float:对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5。

- 字符串string:转义字符\可以转义很多字符,比如```\n```表示换行,```\t```表示制表符,字符\本身也要转义,所以```\\```表示的字符就是\;为了简化,Python还允许用```r''```表```''```内部的字符串默认不转义。```print(r'\\\t\\')```--output-->```\\\t\\```

> 输出时: ```f'my name is {x}' #x是变量```

- 布尔值Ture/False:布尔值可以用and、or和not运算。

- 空值:Python里一个特殊的值,用None表示

*****

### 一些方法与语句

* 运算符: % 求模运算,两个数相除并返回余数

##### 大小写处理

* str.title() 以首字母大写的方式显示每个单词

* str.upper() 全部大写

* str.lower() 全部小写

##### 删除空格

* strip() 删除两端空格

* lstrip() 删除左空格

* rstrip() 删除右空格

*****

### List

* 列表生成式

```

#不使用循环生成[1x1, 2x2, 3x3, ..., 10x10]:

[x * x for x in range(1, 11)]

#for循环后面还可以加上if判断筛选出仅偶数的平方:

[x * x for x in range(1, 11) if x % 2 == 0]

#使用两层循环,生成全排列:

[m + n for m in 'ABC' for n in 'XYZ']

```

* append() 将元素添加到列表末尾

* insert(number, element) 将元素添加到列表指定位置

* del list[num] 删除指定位置元素

* pop(num) 删除列表内元素(不指定默认为末尾元素),但能继续使用

```

list=[1,2,3]

list=list.pop()

popped_list == 3

```

* remove(element) 通过元素的值,指定删除对象

> 方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要 使用循环来判断是否删除了所有这样的值

* sort() 对列表进行永久性排序;按字母顺序;sort(reverse=True)为倒叙

* sorted(list) 对列表进行临时排序;sorted(list,reverse=True)

* reverse() 反转列表元素的排列顺序

* 数字列表

* range(1,5): 1,2,3,4; range(3): 0,1,2,3; range(1,9,2): 2,4,6,8

* min(),max(),sum()

* 列表解析 列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素

```

squares = [ i**2 for i in range(10)]

```

* 列表切片 list[num1:num2]

- 复制列表(副本储存)list1=list2[:];单纯list1=list2相当于赋值

##### 元组tuple(不可变的列表,使用圆括号标识)

*****

### If语句

* 检查特定值是否*不包含*在列表中

```

if sth not in list:

```

* if 语句

```

if a :

else:

if a:

elif b:

elif d:

else c: #else可省略

```

*****

### 字典Dict{'a':'b'}

* dict[key1]="value1"

* del() 删除的键—值对永远消失

* 遍历字典

```

for key, value in dict.items() #遍历字典中的每个键—值对

for key in dict.keys() #遍历字典中的键

for value in dict.values() #遍历字典中值

```

* set() 不重复的列表

### While循环

* while flag==Ture :

* break 退出循环

* continue 终止循环后续,并返回到循环开头

* 遍历 ```while list/dict:```

> for循环是一种遍历列表的有效方式,但在for循环中不应修改列表,否则将导致Python难以 跟踪其中的元素。要在遍历列表的同时对其进行修改,可使用while循环。

*****

### 函数

* 生成器:generator;L是一个list,g是一个generator

```

#要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:

L = [x * x for x in range(10)]

>>> [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

g = (x * x for x in range(10))

>>> generator object at 0x1022ef630>

#可以通过next()函数获得generator的下一个返回值;一般通过for循环来迭代它

```

> 如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。带有yield的函数不仅仅只用于for循环中,而且可用于某个函数的参数,只要这个函数的参数允许迭代参数。

* enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:

```

for i, value in enumerate(['A', 'B', 'C']):

print(i, value)

>>>0 A

>>>1 B

>>>2 C

```

* 空函数

```

def fuc():

pass

```

* 简便的定义函数

```

lambda x,y : x+y ,[1,2,3,4,5]

```

* 可选填形参:在函数定义中最后列出该形参,并将其默认值设置为空字符串

* 禁止函数修改列表:利用切片将列表的副本传递给函数```function(list[:])```

* 传递任意数量的实参:```def func(*list)```

- 形参名*list中的星号让Python创建一个名为toppings的空元组,并将收到的所有值都封装到这个元组z中。

- 如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。```def fuc(num, *list):```

* 将函数存储在模块中:import语句允许在当前运行的程序文件中使用模块中的代码。

- 导入特定的函数```from module_name import function_name```;若使用这种语法,调用函数时就无需使用句点

- 使用as给函数指定别名```from a import b as b1```

- 使用星号(*)运算符可让Python导入模块中的所有函数```from module import *```

*****

### 类 ```class Class_name():```

> 约定俗成,首字母大写的名称指的是类

* ***方法__init__(self, a)***

- 注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。

- 有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去

* 根据类创建实例

- 访问属性 用```.```

*****

### map/reduce/filter/lambda

* map map(function,list);将list中元素一个一个代入function

* reduce reduce(function,list);把一个函数作用在一个序列[x1, x2, x3,...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

```

#累乘积器

from functools import reduce

def prod(x,y):

L=x*y

return L

reduce(prod,[3, 5, 7, 9])

```

```

#利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:

from functools import reduce

def str2float(s):

list1=[]

for i in s:

list1.append(i)

num1=0

num2=0

num0=len(s)

for i in list1:

if i!= '.' :

num1 +=1

num2=num0-num1-1

else:

break

#print(list1[:num1],list1[-num2:])

def s2int(x,y):

return float(x)*10+float(y)

return float(reduce(s2int,list1[:num1]))+float(reduce(s2int,list1[-num2:])*(10**-num2))

#简单写法

def str2float2(s):

def fn(x,y):

return x*10+y

n=s.index('.')

s1=list(map(int,[x for x in s[:n]]))

s2=list(map(int,[x for x in s[n+1:]]))

return reduce(fn,s1)+reduce(fn,s2)/10**len(s2)

```

* filter 过滤序列filter(function,list);返回的结果是一个iterator,需要用list(filter(function,list))获取结果并返回list

* lambda 匿名函数;把定义函数简写在一行内lambda x: x*x

* sorted 默认由小到大排序;反向排序-传入第三个参数reverse=True;可以接收key函数来实现自定义的排序sorted(list,key=abs).

*****

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值