Python学习六 条件判断 input 循环 dict和set

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_43426335/article/details/97960039


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])

猜你喜欢

转载自blog.csdn.net/qq_43426335/article/details/97960039