最近将之前的博客逐渐搬运过来,因为可怜的服务器要到期了hhh

为了能够完成各色python脚本的编写,迫不得已入门python大法! 以下为简易的py语法:

Python string

  1. 对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符;

    eg: ord(‘A’) ->65 chr(66) ->B

  2. 对bytes类型的数据用带b前缀的单引号或双引号表示: x=b’abc’;

  3. 可以通过encode() 将Unicode表示的str编码为指定的 bytes;

  4. 格式化输出字符串:

  • c语言格式;

  • format 方法’aaaa{0}bbbb{1}cccccc……’.format(para1,para2…)参数会依次取代占位符{0} {1}{…};

python list and tuple

  1. list(列表) :classmates = [‘elementl’, ‘element2’, [‘element31’,’element32’],’element4’]
  • len()得到元素个数;

  • classmates[-n]可以得到倒数第n个元素;

  • classmates.append(‘element’)追加元素到末尾;

  • insert(n,’element’)插入到指定位置;

  • pop()删除末尾元素;pop(i)删除指定位置元素;

  • classmates[n]=’element’直接替换为别的元素;

  • list元素可以是另一个list。

  1. tuple(元组): classmates = (‘elementl’, ‘element2’, (‘element31’,’element32’),’element4’)
  • 一旦初始化就不能修改(每个元素指向不变),一定程度上相当于const;

  • 获取元素方法与list相同;

  • 当只有一个元素时 t=(1,) 需要使用’,’来消除歧义;

  • tuple中包含list元素时,list中的元素可以变,因为对tuple来说其指向并没有改变。

python dic

(同c++map)

d = {‘key1’: value1, ‘key2’: value2, ‘key3’: value3} => d[‘key1’] ->value1

为避免key不存在:

  • ‘key’ in d 不存在则返回False;
  • d.get(‘key’,value) 不存在则返回value;
  • pop(key)可以删除key即对应的value。

python set

  • set也是一组key的集合但不储存value;key不能重复。

  • 创建set需要提供一个list作为输入集合 s = set([1,2,3]);

  • add(key)添加key ;remove(key)删除key。

1
2
3
4
5
6
7
8
9
10
11
和list比较,dict有以下几个特点:

查找和插入的速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多。

而list相反:

查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。

python loop

  1. for i in list/tuple: 把list或tuple中的每个元素带入i,执行之后缩进块的语句;

    range()函数可以生成一个整数序列,list(range(n))可以将其转化为list;

  2. while xxx:

  3. break / continue 同c。

python func

  • 空函数:pass用来做占位符,让代码格式正确。

  • 可以返回多个值,实质上是返回的tuple;

  • None 为不变对象,需要时可以将函数的参数定义为不变对象,这样在每次调用时都是从初始定义的变量开始。(即python函数参数变量默认等于c语言的static,加上none可以去掉static)

1
2
3
4
5
#Python2.7在一行输入多个数字的方法:

输入一个数字 m = int(raw_input())

输入多个数字是 m, n,.... = map(int, raw_input().split())
  • 可变参数: 函数 def funcname(‘*’args):定义一个参数数量不定的list/tuple L, 调用funcname(L)即可;

  • 关键字参数:函数def funcname(a,b,’‘’‘kw):c为关键字参数(例如用户注册 ab为必填项 c为选填项);调用时funcname(A,B,e=E,f=F);

  • 命名关键字参数:函数def funcname(a,b,’‘,c,d):’‘后面为命名关键字参数,即选填项只能是定义的key;也可以是 def funcname(a,b,’‘,c,d,e):可变参数c后面的命名关键字参数不必再加’*’;对于前者,调用时funcname(A,B,c=C,d=D);

python slice

用于取一个list或tuple的部分元素:L = [‘element1’, ‘element2’, ‘element3’, ‘element4’, ‘element5’]

slice操作符使用:

eg:取前三个元素 L[0:3] /L[:3];取后两个元素L[-2:];取倒数第二个元素L[-2:-1];

L[:10:2]前十个数里每两个取一个;L[::5]所有数每五个取一个;

python iteration

即循环遍历;

d = {‘a’: 1, ‘b’: 2, ‘c’: 3}

eg:

  • 循环迭代dict: for key in d://默认dict 迭代的是key ;
    迭代value : for value in d.values();
    同时迭代 :for k,v ind.items()
  • 判断是否可迭代:通过collections模块的Iterable类型判断
1
2
 from collections import Iterable 
isinstance(objects,Iterable)
  • 下标循环的实现:通过内置的enumerate函数判断
1
for i, value in enumerate(['A', 'B', 'C']):

python list generation

eg:

  • 生成L=[1,4,9,….100]:[x*x for x in range(1,100)];

  • 筛选出仅偶数的平方:[x*x for x in range(1,100) if x%2 ==0];

  • 两层循环生成全排列:[m+n for m in 'ABC' for n in 'DEF' ];

  • 列出当前目录下所有文件即目录名:import os | [d for d in os.listdir('.')];

  • 把一个list L 中所有字符串变为小写:[s.lower() for s in L];

python genarator

不必创建完整的list,节省大量空间;边循环边计算,称为生成器generator;

方法:将列表生成式的[]改为()即可;