一、集合
1、集合介绍
集合( set )是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素。是可变数据类型。集合数据类型的核心在于自动去重。
比如说,去重这个我可以这么干
s1 = set([1, 2, 3, 1, 2, 3, 12, 3])
print(s1) # 集合:自动去重
"""
输出:
[1,2,3,12]
"""
s3 = set("hello world")
print(s3)
# 1.全部拆开 2.去重 3.无序
"""
输出:
{'d', 'e', 'o', 'w', 'l', 'h', 'r', ' '}
"""
2、集合创建
集合使用 大括号 {} 框定元素,并以逗号进行分隔。
s = {ele1,ele2,ele3…}
s = set(iterable)
创建集合千万别这么写:s={} ,这表示空的字典,要这么写:s=set(),这才创建了一个空的集合
创建字典的方式就是以上两种
s = {}
print(type(s))
# <class 'dict'>
s1 = set()
print(s1)
print(type(s1))
# <class 'set'>
3、添加元素
1、通过 set.add(key) 方法可以添加元素到set中
我们要注意:可以重复添加,但是会自动去重,所以无效果,这个集合添加了3,但是原来的列表当中已存在3,所以添加操作过后被去重了,所以是无效的
s = set([1,2,3,4,5])
s.add(3) # 自动去重
print(s4)
"""
输出:
[1,2,3,4,5]
"""
比如说自定义数量的随机数的生成,以及去重操作
import random
N=int(input())
li=[]
i=1
while i<=N:
a=random.randint(1,1001)
li.append(a)
i+=1
li=set(li)
print(li)
2、不能添加可变对象
s4.add([1,2,3]) # 报错。同字典key一样,只能添加不可变对象。
print(s4)
3、集合更新
可以通过 set.update() 方法,将另一个对象更新到已有的集合中,这一过程同样会进行去重。
s = {1,2,3,4,5}
s.update("hello") # 更新,也就是将"hello"每个都拆开添加到s当中。仍然去重
print(s)
"""
输出:
{1, 2, 3, 4, 5, 'o', 'h', 'e', 'l'}
"""
4、删除元素
set.remove(key):删除指定元素
set.pop():随机删除元素,括号内不需要参数
这里我们需要注意:集合不能取出某个元素,因为集合既不支持下标索引也不支持字典那样的通过键值对获取。
s = {1,2,3,4,5}
print(s2[2]) # 无序的,所以没有下标的概念这个语句会报错
s.remove(4) # 删除元素
print(s)
s.remove("amy") # 元素不存在时,则报错
print(s)
s3 = set("hello world")
s3.pop() # 随机删除
print(s3)
二、顺序与while循环
1.顺序语句
Python代码在执行过程中,遵循下面的基本原则:
1、普通语句,直接执行;
#对于普通语句,代码从上之下执行
print("hello world1")
print("hello world2")
print("hello world3")
"""
输出:
"hello world1"
"hello world2"
"hello world3"
"""
2、碰到函数,将函数体载入内存,并不直接执行
#此时,代码从上至下执行,但是函数只有在调用时才会执行
def func_name():
print("I am func name")
func_name()
"""
输出:
"I am func name"
"""
3、碰到类,执行类内部的普通语句,但是类的方法只载入,不执行
class MyClass:
print("I am myclass")
def my_test(self):
print("I am mytest ")
d = MyClass()
d.my_test()
"""
输出:
I am myclass
I am mytest
"""
4、碰到if、for等控制语句,按相应控制流程执行
salary = input("今天发工资了吗?y/n:")
if salary.upper() == 'Y':
print("ye!吃大餐")
elif salary.upper() == 'N':
print("吃泡面")
elif salary.upper() == 'E':
print("退出程序")
else:
print("您的输入有误!")
"""
1.冒号一定是英文状态下的
2.缩进并不强制要求4个空格,但是尽量统一4个空格(1个tab)
3.elif后面跟条件,else不要跟条件
4.elif可以有多个,else只能有一个
5.python当中没有switch-case语句
"""
5、碰到@,break,continue等,按规定语法执行
6、碰到函数、方法调用等,转而执行函数内部代码,执行完毕继续执行原有顺序代码
程序主入口(熟悉)
一个 .py,除了可以被直接运行外,还可以作为模块, 被其他 .py文件导入。不管是直接运行还是被导 入,.py 文件的最顶层代码都会被运行(Python用缩进来区分代码层次)。但是当一个.py文件作为模块被导入时,我们可能不希望一部分代码被运行。那么就可以将这部分代码的调用写在主程序中。
2.while循环
1、循环控制介绍
循环控制,就是让程序循环运行某一段代码直到满足退出的条件,才退出循环Python用关键字for和 while来进行循环控制
while循环表达式当程序从上至下执行时,遇到while循环语句,则会判断表达式是否成立 ,当成立时则会进入while循环体内,执行循环体内部执行的代码块。直到判断表达式不成立时 ,则终止循环。比如说我要连续打印所有的水仙花数
i=100
while i<=999:
a=i//100
b=i%10
c=(i//10)-10*a
if a**3+b**3+c**3==i:
print(i)
i+=1
"""
输出:
153
370
371
407
"""
2、循环控制 break 与 continue 语句
break: 当 循环体 执行的过程中想要 退出循环体,就可以使用到 break 语句。
n = 1
num_sum = 0
#循环它是不可逆的,只能一直往下执行。
while n <= 100:
num_sum = num_sum + n # 0+1+2+3+...+100
if n == 8:
break# break:退出循环,不再执行循环操作
n = n + 1
print(num_sum) # 5050
"""
输出:
36
"""
continue: continue语句用于跳过当前循环体 剩余部分的代码,直接开始下一轮循环。它不会退出和终止循环。
n = 1
num_sum = 0
#循环它是不可逆的,只能一直往下执行。
while n <= 10:
num_sum = num_sum + n # 0+1+2+3+...+10
if n == 8:
continue
# break:退出这次循环,执行下一次循环操作
n = n + 1
"""
输出:
47
"""
3、循环控制 while 的 else 从句
while 循环还可以增加一个 else 从句。当 while 循环 正常执行 完毕,会执行 else 语句。
注意:
else 与 while 平级的缩进方式
如果是被 break 等机制强制提前终止的循环,不会执行 else 语句。if与while的嵌套使用
i=input("今天学习了吗 yes/no:")
if i=="yes":
while True:
print("very good")
j=int(input("今天学习了什么:"))
print("1、python")
print("2、高数")
print("3、退出")
if j==1 or j==2:
print("very good")
break
elif j==3:
print("已退出")
break
else:
print("请重新输入选项:")
else:
print("请抓紧学习")
循环控制 while循环嵌套使用
if 判断可以嵌套,while 当然也可以嵌套。但是建议大家不要嵌套3层以上,那样的效率会很低。比如说我们使用嵌套循环打印“*”
row = 1
# 外层循环代表:行数
while row <= 4:
starts = 1
while starts <= row:
print("*", end='')
# print(row, starts)
starts += 1
print('')
row += 1
"""
输出:
*
**
***
****
"""
4、循环控制for循环表达式虽然与while 一样都是循环的关键字,但for循环通常用来遍历可迭代的对象 注意:
for … in …: 属于固定格式
iterable 表示 可迭代的对象
i 是变量名(可更改),代表可迭代对象里面的每个元素
关于for循环,我们放到下一节来继续讲解