list
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可
'''
数组:list,
元组:元素不可变(tuple 的每个元素,指向永远不变)
任意无符号的对象,以逗号隔开,默认为元组
'''
tp1=(1,2,['a','b'])
print(id(tp1[2]))
tp1[2].append("c")
print(id(tp1[2]))
a=1;b=2
def test(a,b):
return a,b
print(type(test(a,b)))
'''打印结果:
57296336
57296336
<class 'tuple'>
'''
字典
花括号{}表示这是一个dict,用于类似给定一个名字,就可以直接查找分数,d={}
由于dict也是集合,len()函数可以计算任何集合的大小
使用dict本身提供的get方法,当Key不存在时,返回None,print d.get()
dict的第一个特点是查找速度快,占用内存大,还会浪费很多内容
第二个特点是存储的key-value序对是没有顺序的,不能用dict存储有序的集合
第三个特点是作为key的元素必须不可变,不可变这个限制仅作用于Key,value是否可变无所谓
python的基本类型如字符串,整数,浮点数都是不可变的,都可以作为key。但是list是可变的,就不能作为key
由于dict是按Key查找的,所以,在一个dict中,key不能重复
通过d[key]获取value
'''
字典:{}dictionary
以key-value(键 ,值)形式储存和取值,列表通过偏移取值
如果有同样的key,后面的值会把前面的值覆盖
key一定是不可变的
'''
info = {"name": "faker", "age": 18} #定义一个字典
print(type(info))
print(isinstance(info, dict))
print(info["name"])
print(info.get("name")) #字典取值
print(info.keys()) #获取字典的key
print(info.values()) #获取字典的值
print(info.items()) #用于字典的遍历取值
print(info.get((1,2)))
info["where"]='shanghai' #字典增加一个key-value
print(info)
info.pop('age') #删除字典中的元素
print((1, 2) in info.keys()) #通过in判断 key是否存在
'''打印结果:
<class 'dict'>
True
faker
faker
dict_keys(['name', 'age'])
dict_values(['faker', 18])
dict_items([('name', 'faker'), ('age', 18)])
None
{'name': 'faker', 'age': 18, 'where': 'shanghai'}
False
'''
字典和json
json:一种轻量级的数据交换格式,
一种规定了格式的字符串,""括起来的键值对
一种通用的信息传递规则
具体互相转换可看链接:
https://blog.csdn.net/weixin_42412744/article/details/105521094
集合(set)
set持有一系列元素,但是set的元素没有重复,而且无序
由于set存储的是无序集合,所以我们没法通过索引来访问
访问set中的某个元素实际上就是判断一个元素是否在set中,可以用in操作符判断,‘Bart’ in s (注意区分大小写)
set内部结构和dict很像,唯一区别是不存储value,因此判断一个元素是否在set中速度很快
set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set的
for循环在遍历set时,元素的顺序和list的顺序很可能是不同的,而且不同的机器上运行的结果也不同
更新set主要做2件事,一是把新的元素添加到set中,二是把已经的元素从set删除
添加元素时用s.add() 删除元素时用s.remove(),通常使用for if…else…
'''set和dict相似,也是一组key 的集合,但是不储存value'''
set1={"tom", "jack", "alis", "tom"} # 这里演示的是去重功能
print(type(set1))
print(set1)
'''打印结果:
<class 'set'>
{'tom', 'jack', 'alis'}
'''
条件判断 if else
'''if else
如果条件为真,执行action1,反正执行条件2
if Ture:
action1
else:
action2
'''
age = 18
if age >= 18:
print("{}岁的你已经成年了".format(age))
print("你可以参加考试")
else:
print("你还没成年")
'''精确判断:需要用到多层的 if -else 循环
判断成绩的等级:
95-100:不得了
90-95:优秀
80-90:良好
60-80:刚刚好
60以下:不及格
'''
grade=int(input("请输入你的成绩:")) #假设用户输入的是0-100
print(type(grade))
if grade>=95:
print("不得了")
else:
if grade > 90:
print("优秀")
else:
if grade > 80:
print("良好")
else:
if grade > 60:
print("刚刚好")
else:
print("不及格")
elif
'''elif'''
if grade>=95:
print("不得了")
elif grade>=90:
print("优秀")
elif grade>=80:
print("良好")
elif grade>=60:
print("刚刚好")
else:
print("不及格")
循环
第一种:while: 只要条件为真,循环就会一直执行
第二种:for
'''循环'''
import time
while 1:
print("123")
time.sleep(1)
n=1
while n<=10:
print(n,end='')
if n==7:
continue
n = n + 1 #代码永远不会走到这里了
'''break:在循环中,break可以提前退出循环
continue:跳过当前的这次循环,直接开始下一次循环
'''
n= 0
while n<10:
n=n+1
if n%2==0:
continue
print(n)