Python 集合与while循环


一、集合

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循环,我们放到下一节来继续讲解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值