c/c++最好成对的打括号,打引号,
python交互状态下最好一个一个打,不过也无所谓,(而其实你会发现还是成对打方便)
条件判断
if后面没有括号,没有括号,没有括号
print后面可以有分号,无所谓啦
if :#即使if条件成立,后面跟着多个输出,不需要加大括号,用缩进表示循环体,
else:#后面跟着多条语句时也是缩进
>>> a=4
>>> if a>3:
... print(11)
... print(22)
... else:
... print(33)
...
11
22
多个选择时
if-elif-elif
满足某一条件时,剩下的条件将不被执行
if :
elif :
elif :
else
简化来写可以写为
if 1:
print()
再议input
input输入默认为字符串str,不能与整数直接比较
python提供了int()来比较
TypeError: unorderable types: str() > int()
>>> s=input()
123
>>> b=int(s)
>>> if b>3:
... print(3)
... else:
... print(b)
...
3
循环
for …in循环,可以依次吧list或tuple中的每个元素迭代出来
for x in…循环就是把每个元素带入变量x,然后执行缩进块的语句
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
Michael
Bob
Tracy
也可以直接将list放在in后面
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + x
print(sum)
range函数
生成整数序列,在通过list()函数转换为list,(应用1到300累加和)
>>> list(range(5))
[0, 1, 2, 3, 4]
while循环
和c语言一样,不过有多条语句的时候不用大括号,用缩进表示循环体
break,结束循环
continue,结束本次循环,跳出下一次循环(偶数和)
死循环时用Ctrl+C退出程序,或者强制结束Python程序
dict
相当于c++中的map函数,即键-值储存
dict表示符号 {}
(也可以用list,类似于两个数组的对应关系)
dict的key必须是不可变对象。!!!
字符串,整数等都是不可变的,,但是list是可变的,就不能作为key
>>> d={q:1,w:2}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'q' is not defined
在不叫引号的时候表示一个变量,加了引号后就变成了字符串
>>> d={'q':1,'w':2}
>>> d['q']
1
查找速度极快
除了指定的初始化外,还可以通过键(key)来放入
>>> d['q']=0
>>> d['q']
0
如果key不存在就会报错
判断key是否在dict中
1)in
>>> 'q'in d
True
>>> 'e' in d
False
2)通过dict提供的get()方法
>>> d.get('a')#在交互状态下返回为None(不存在)的时候不显示结果,或者可以指定返回的value
>>> d.get('a',1)
1
>>> d.get('q')
0
删除key,用pop(key)的方法,对应的value也会被删除
dict内部存放的顺序和key放入的顺序是没有关系的
dict与list比较
dict
1)查找,插入速度快,不会随着key的增加而变慢
2)占用大量内存
list
1)查找和插入的时间随元素的增加而增减
2)占用的内存较小
dict是用空间换取时间的一种方法
set
key值不能重复
重复元素被自动过滤
>>> s=set([1,2,3])
>>> s
{1, 2, 3}
>>> a=set([1,1,1,2,23,])#证明list中最后是否有,无所谓
>>> a
{1, 2, 23}
>>>
通过add(key)可以添加元素到set中,重复添加无效果
remove(key)可以删除key
可以借助set实现数学上的交,并运算
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
set也不可以放入可变对象
再议不可变对象
对于可变对象list,对list进行操作内部内容是会变化的
>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a
['a', 'b', 'c']
对于不可变对象str操作他是不可变的
>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
>>> a
'abc'
变出了Abc但是不是将a变成Abc
replace创建了一个新的字符串'Abc'并返回,如果用新的变量b指向字符串就能体现出来了,a仍然指向原有的字符串
>>> a = 'abc'
>>> b = a.replace('a', 'A')
>>> b
'Abc'
>>> a
'abc'
对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。这些方法会创建新的对象 并返回,这样,就保证了不可变对象本身永远是不可变的。
关于tuple,还是理解为指向不变吧
b=(1,2,3)
c=(1,[2,3])
b
(1, 2, 3)c
(1, [2, 3])