python语法Word格式.docx
《python语法Word格式.docx》由会员分享,可在线阅读,更多相关《python语法Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
练习:
生成一个存在10000以内奇数的列表(用交互环境实现)
列表的运算:
算术运算:
+
+=
*
*=
(类似于str的用法)
+用于拼接列表
x=[1,2,3]
y=[4,5,6]
z1=x+y
#z1=[1,2,3,4,5,6]
z2=y+x
#z2=[4,5,6,1,2,3]
+=原列表与右例列表拼接后变量绑定新列表
x+=y
#x=[1,2,3,4,5,6]
*生成重复的列表:
L=[1,2]*3
#L=[1,2,1,2,1,2]
L2=3*[5,6]
#L2=[5,6,5,6,5,6]
*=用原列表生成重复的列表,用变量绑定新生成的列表
x*=2
#x=[1,2,3,1,2,3]
比较运算:
>
=<
<
===!
=
y=[1,2,4]
[1,'
two'
]>
["
two"
1]#TypeError
列表推导式(listcomprehension)
列表推导式是用可迭代对象依次生成列表内元素的方式:
列表推导式是表达式
语法:
[表达式for变量in可迭代对象]
或
[表达式for变量in可迭代对象if条件表达式]
说明:
1.先从可迭代对象取一个值,用变量绑定
2.调用表达式,把当前的表达式结果追加到列表中
3.重复上述步骤,直到可迭代对象不再提供数据为止
4.forin表达式的if子句可以省略,省略后将对所有生成的对象进行处理
5.如果if条件语句的真值测试值为False,则可迭代对象生在的数据将被丢弃
示例:
#生成一个数值为1~9的平方的列表
[1,4,9,16,.....81]
#用for语循环实现
L=[]
forxinrange(1,10):
L.append(x**2)
#用列表推导式实现
L=[x**2forxinrange(1,10)]
生成:
[1,3,5,7,9,.....99]列表
L=[xforxinrange(1,100,2)]
L=[2*x-1forxinrange(1,51)]
上题的另一种解法:
L=[xforxinrange(100)ifx%2==1]
用列表推导式生成1~100的x**x-1次方的列表,把能被7整数的数去掉
1**1-1,2**2-1,3**3-1,.....99**99-1
答案:
L=[x**x-1forxinrange(1,100)if(x**x-1)%7!
=0]
列表推导式的嵌套:
语法:
[表达式1
for变量1in可迭代对象1
for变量2in可迭代对象2(if真值表达式2)]
()表示可省略
已经有字符 s="
ABC"
字符串d="
123"
想生成列表['
A1'
'
A2'
A3'
B1'
B2'
...]
#用循环嵌套:
s="
d="
forxins:
foryind:
L.append(x+y)
用列表推导式实现
L=[x+yforxinsforyind]
列表推导式练习:
用列表推导式生成如下列表:
[1,4,7,10,.....100]
答案:
[xforxinrange(1,101,3)]
2.生成如下列表(思考题):
[[1,2,3],[4,5,6],[7,8,9]]
答案1:
[[x,x+1,x+2]forxinrange(1,8,3)]
答案2:
[[yforyinrange(x,x+3)]forxinrange(1,8,3)]
字符串文本解析方法:
S.split(sep=None)
用sep字符将字符串分隔,返回关于字符串的列表
S.join(iterable)
将一个可迭代对用字符S进行拼接,生成新的字符串
s="
Beijingiscapital"
L=s.split('
'
)
s2='
-'
.join(L)
#s2="
Beijing-is-capital"
思考:
有字符串"
hello"
能否生成"
hello"
和"
h->
e->
l->
o"
print('
'
.join(s))
->
'
.join(list(s))
元组tuple
什么是元组:
元组是不可变的序列,同list一样,可以存放任意类型的元素
字面值的表示方法:
用小括号()括起来,单个元素括起来后加逗号(,)区分单个对象还是元组
创建空元组:
T=()
非空元组
T=200,
#含有一个元素的元组
T=(20,)
#有一个元素的元组
T=(1,2,3)
#有3个元素的元组
T=100,200,300
错误示例:
t=(20)
#错的t绑定20(整数型)
x,y,z=(100,200,300)
#序列赋值(不是元组)
x,y,z=[100,200,300]
x,y,z="
元组的构造(创建)函数
tuple()
生成一个空的元组,等同于()
tuple(iterable)
用可迭代对象生成一个元组
算术运算:
*=
t=(1,2,3)+(4,5,6)
t=(1,2)*3
t*=2
id(x)函数
id(x)
用于返回一个对象在内存在的地址
注:
is运算符就是比较的内存地址
t=(1,2,3)
id(t)
t+=(4,5,6)
L=[1,2,3]
id(L)
L.append(4)
in/notin运算符:
t=(1,'
2'
3,(4+4J))
2int
#
True?
索引
索引的规则等同于字符串的规则
元组不能用索引赋值
t[1]=2
#出错
切片
用法等同于字符串的切片
元组的切片返回一个新的元组
t=tuple(range(10))
t2=t[1:
:
3]
综合练习:
生成一个x的平方的元组
(1,4,9,16,5**2,81)
t=("
abc"
[1,2,3])
t[1][1]=2.2222#结果是什么?
元组的方法:
T代表元组
T.index(value[,begin[,end]])
返回对应元素的下标,如果不存在则引发ValueError异常错误
T.count(value)
返回元组中元素的个数
序列相关的函数总结:
len(seq)
max(x)
min(x)
sum(x)
any(x)
all(x)
str(obj)
list(iterator)
tuple(iterator)
-------以下是新的------
reversed(seq)
返回反向顺序的可迭代对象
sorted(iterable,reverse=False)
返回已排序的列表
L=[3,5,9,6]
#L.reverse()
reversed(L)
字典dict
字典的定义
1.字典是一种可变的容器,可以存储任意类的数据
2.字典中每个数据都是用"
键"
(key)进行索引的(不象序列可以下标索引)
3.字典中的数据没有先后关系,字典的存储是无序的
4.字典中的数据是以键(key)-值(value)对的形式进行存储
5.字典的键不能重复,且只能用不可变类型作为字典的键
字典的字面值表示方法:
以{}括起来,以冒号(:
)分割键值对,各键值对之间用逗号(,)分隔开
创建空字典:
d={}
创建非空字典的方法:
d={"
name"
"
weimingze"
age"
35}
d={(2008,8,8):
olympic"
}
d={1:
one"
2:
d={None:
Wu...."
字典的构造(创建)函数
dict()
创建一个空的字典
dict(iterable)
用可迭代对象创建一个字典
例:
d=dict()
空
L=[("
),("
35)]
d=dict(L)
#用可迭代对象生成字典
有列表:
names=["
tarena"
xiaozhang"
ages=[35,18,20]
用这两个列表生成如下字典:
{"
35,"
:
18,....}
答案见:
exercise/dict_create.py