list、
L = list(range(100)) //创建一个0-99的数列
切片
L = list(range(100)) //创建一个0-99的数列
//前10个数,每两个取一个
L[:10:2]
[0, 2, 4, 6, 8]
tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:
>>> (0, 1, 2, 3, 4, 5)[:3]
(0, 1, 2)
字符串’xxx’也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:
>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[::2]
'ACEG'
迭代
1、迭代dict
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:
print(key)
...
a
c
b
默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values()
,如果要同时迭代key和value,可以用for k, v in d.items()
for k,v in d.items():
print (k,v)
2、判断一个对象是否是可迭代对象
通过collections模块的Iterable类型判断
from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
3、迭代索引和元素本身
使用enumerate函数可以把一个list变成索引-元素对
for i, value in enumerate(['A', 'B', 'C']):
print(i, value)
4、for循环同时使用两个甚至多个变量
d = {'x': 'A', 'y': 'B', 'z': 'C' }
for k, v in d.items():
print(k, '=', v)
列表生成式
1、
d = {'x': 'A', 'y': 'B', 'z': 'C' }
l = [k + '=' + v for k, v in d.items()]
print(l)
['y=B', 'x=A', 'z=C']
在for之前的语句为要生成的表达式:k + '=' + v
2、用列表生成式,列出当前目录下的所有文件和目录名
import os
l = [d for d in os.listdir('.')]
print(l)
3、把一个list中所有的字符串变成小写
L1 = ['Hello', 'World', 18, 'Apple', None]
L2 = [ x.lower() for x in L1 if isinstance(x, str)]
print(L2)
函数参数
1、位置参数
def enroll(name, gender):
print('name:', name)
print('gender:', gender)
2、默认参数
默认参数必须指向不变对象
def add_end(L=None):
if L is None:
L = []
L.append('END')
return L
3、可变参数
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
numbers接收的是一个tuple
Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去
>>> nums = [1, 2, 3]
>>> calc(*nums)
4、关键字参数
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
kw接收的是一个dict,关键字参数既可以直接传入:func(a=1, b=2)
,又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})
组装出一个dict,然后,把该dict转换为关键字参数传进去:
>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, city=extra['city'], job=extra['job'])
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
当然,上面复杂的调用可以用简化的写法:
>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
5、命名关键字参数
用于限制关键字参数的名字,命名关键字参数必须传入参数名
例如,只接收city和job作为关键字参数。这种方式定义的函数如下:
def person(name, age, *, city, job):
print(name, age, city, job)
调用方式如下:
>>> person('Jack', 24, city='Beijing', job='Engineer')
Jack 24 Beijing Engineer
生成随机数、字符串
import random
import string
char_list = ['z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a','!','@','#','$','%','^','&','*','(',')']
rand_int = random.randint(1,20)
print string.join(random.sample(char_list, rand_int)).replace(' ','')