|
本章目录
2.1 for 扩展用法
2.2 格式化字符串
2.3 数据类型
2.3.1 整数
2.3.2 符点型
2.3.3 字符串
2.3.4 列表,元组
2.4.5 字典
2.4.6 fromkeys
2.4.7 set
2.1 for 简单用法
for 循环
range() 循环的次数 >>> range(3)
[0, 1, 2]
>>> range(1,3)
[1, 2]
>>> range(1,100,2) 从1开始100结束,步长2
for exam in enumerate(数组) 自动增加一个编号
for exam,v in enumerate(数组,1) 从1开始
print(exam,v) 去掉元组括号
2.2 格式化字符串
格式化输出占位符 %s, s = str 字符串
%d, d = digit 整数
%f, f = float 浮点数
格式化输出
#/usr/bin/env python # -*- codeing:utf-8 -*-
name = input("Name:")
age = input("age: ")
job = input("Job: ")
salary = input("salary: ")
if salary.isdigit():
salary = int(salary)
# else:
# exit("enable int ")
xio = '''
---------- info of %s ----------
Name: %s
Age: %s
Job: %s
Salary: %f
---------- end ----------
''' % (name,name, age, job, salary )
print(xio)
### 输出
Name:xiong age: 22
Job: it
salary: 3333
---------- info of xiong ----------
Name: xiong
Age: 22
Job: it
Salary: 3333.000000
---------- end ----------
2.3 数据类型
整数: 判断 isdigit 长的像不像数字
数字
整数 int(integer)
整型
长整型
in py3 已经不区分整型与长整型,统一叫做整型
浮点数:
用于处理实数,即带有小数的数字,占8个字节(64位) 其中52位表示底,11位表示指数,剩下一位表示符号。
布尔 只有2种
真: True
假: False
列表, 元组
a = ['aa','bb','cc','dd','ee','ff']
a = [ 0 , 1 , 2, 3, 4, 5 ] # 这里为上面值的下标第一个值对应下标0
in 包含某个内容是否存在于数据中,
查询: 索引(下标), 都是从0开始
print (a[0]) # 取第0个索引,意为第一个值
打印结果为: aa
print(a[1:3]) # 从左往右,从第2个值一直到第4个值
打印结果为: ['bb', 'cc'] 顾头不顾尾,最后一个不打印出来
print(a[1::1]) # 从第1个值开始一直到最后一个,步长每次加1,从左往右
打印结果为: ['bb', 'cc', 'dd', 'ee', 'ff']
print(a[::-1]) # 从第1个开始直到最后一个,但这里是从右开始减,每次减一直至最后
打印结果为: ['ff', 'ee', 'dd', 'cc', 'bb', 'aa']
添加:
a.append('gg') # 最右添加一个值
打印结果为: ['aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg']
a.insert(2,'hh') # 默认插到最后一个位置,这里插到第2个索引
打印结果为: ['aa', 'bb', 'hh', 'cc', 'dd', 'ee', 'ff', 'gg']
修改:
a[2]='hc'# 将原先插入的第2个值hh直接修改为hc
打印结果为: ['aa', 'bb', 'hc', 'dd', 'ee', 'ff']
a[2:3]=['ha','da']# 将第2个值hh,第3个值dd修改为ha da
打印结果为: ['aa', 'bb', 'ha', 'da', 'dd', 'ee', 'ff']
删除:
a.remove('ha') # 删除值,这里只能删除内容,不能直接删除下标
打印结果为: ['aa', 'bb', 'da', 'dd', 'ee', 'ff']
# a.remove(a[0]) # 删除指定值的下标,如不清楚内容的情况下,可以用这种方式
# 打印结果为: ['bb', 'da', 'dd', 'ee', 'ff']
a.pop(1) # 删除指定索引
打印结果为: ['aa', 'cc', 'dd', 'ee', 'ff']
b=a.pop(1) # 删除指定索引,并直接赋值给b,方便查看删除的某个值的内容,避免犯错
打印结果为: bb
a.clear() # 清空
del a # 直接将对象a给删除
del a[1]# 删除指定索引1 ,简单粗暴,但危险
统计出现的字符串: count
b = ['11','22','33','11','22','11'].count('11')定义一个对象以及数组,并统计type(str(11))出现了多少次
打印结果为: 3
附加字符串: extend
a=['1','2','3']
b=['4','5','6']
a.extend(b)# 定义两个值,将b内容附加扩展到a上
打印结果为: ['1', '2', '3', '4', '5', '6']
查找索引: index
print(a.index('cc'))# 查询内容对应的下标索引值是多少
打印结果为: 2
将结果倒过来输 reverse
b = ['11','22','33','11','22','11']
print (b.reverse()) # 这种方式只能得出none, 想输出只能 b.reverse() print(b)
打印结果为: ['11', '22', '11', '33', '22', '11']
b.sort(reverse=True) # 从大到小排序
排序 sort # 函数直接对内容进行排序,没有return返回值所以赋值给另一个值会直接为空
b = ['11','22','33','11','22','11']
--> b.sort()
--> print(b)
打印结果为:['11', '11', '11', '22', '22', '33']
身份判断 >>> type(a) is list
True
元组: 只读列表
xx = () # 空元组
xx2 = (20,) # 一个元素,需要在元素后添加括号
2.4.5 字典
字典: 键值对数据类型
字典必须是不可修改的类型,字典,元组 都不可以做为键
字典两大特点: 无序,键唯一
a=[1,2,3]
a=list((1,2,3))
dict() 跟list创建方法是一样的
dic1=[]
dic2=dict() 方法必须带括号 dic2=dict((("name","xiong"),("age",33),))
键值添加
dic1={"name":"xiong"}
dic["age"]=222
# 键存在,不改动,返回字典中相应的键的对应值
dic1.setdefault("hobby","NNN")
# 键不存在,在字典中增加新的键值对,并返回相应值
字典查询
dic1 = {"name":"xiong", "age":33,}
print(dic["age"])
# 将所有的键都取出做为一个列表, 类型为dict_keys
dic1.keys()结果:dict_keys(['name', 'age', '1'])
# 将字典中所有的值都出来
dic1.values()结果: dict_values(['xiong', 33, 'test1'])
# 将字典的键值对都取出来
dic1.items()结果:dict_items([('name', 'xiong'), ('age', 33), ('1', 'test1')])
xx = list((dic1.keys()))
print(type(xx))<class 'list'>
修改
dic = {"name":"xiong", "age":33,}
dic["age"]=34
dic2 = {'1':'111','2':'222'}
dic.update(dic2)# 跟列表中extend功能一样
结果为 {"name":"xiong", "age":33, '1':'111', '2':'222'}
删除
del dic1["name"]结果: 删除name的键值对
del dic1 结果: 删除整个字典
dic1.clear()结果: 清空字典
dic5.pop("age")结果: 删除字典中指定键值对,并返回该键值对的值
# 随机删除一个键值对,并以元组方式返回值
dic1.popitem()
2.4.6 fromkeys
其它操作以及涉及到的方法
dic3=dict.fromkeys(["h1","h2","h3"],"hhh")
print(dic3)得出结果 {'h1': 'hhh', 'h2': 'hhh', 'h3': 'hhh'}
# 将多个值赋值给多个键
dic3=dict.fromkeys(["h1","h2","h3"],["hhh","ggg"])
print(dic3)结果:{'h1': ['hhh', 'ggg'], 'h2': ['hhh', 'ggg'], 'h3': ['hhh', 'ggg']}
字典的嵌套
data = [
{"1",22 },
{"2",33 },
]
排序
# 返回一个有序的包含字典所有key的列表
print(sorted(dic3.items()))
结果: [('h1', ['hhh', 'ggg']), ('h2', ['hhh', 'ggg']), ('h3', ['hhh', 'ggg'])]
遍历
dic1=dict((("name","xiong"),("age",33),))
for i in dic1:
print(i,dic1)
2.4.7 set
set: 把不同的元素组成一起形成集合,是py基本的数据类型
# 去重功能,当有两个相同的元素的时候会去掉重复的字符串
# 必须是可hash的字符串,set是无序的,只能通过循环遍历或使用in、not in来访问或判断集合元素
# set 不能做为键
更新set集合_添加
a = ["a","b"]
c=set(a)
c.add("c")
print(c)结果: {'b', 'a', 'c'}
update
c.update("ab1")
print(c)结果: {'b', '1', 'a', 'c'}
# ab1 做为一个序列添加,有重复的不会添加序列, 没有重复的会直接添加到列表中
c.update([123,321]) # 当为列表时,它会将序列当成一个整体加入到变量中,有重复的也不会添加
print(c)# {321, 'b', 'a', 123}
remove, pop, clear, del
c.remove("a") 结果: {'b', '1', 'c'}
c.pop()结果: 随机删除一个
c.clear()# 结果: 清空列表 返回 set()
del c # 直接删除变量,打印报错因为已经没了
交集,并集
a=set([1,2,3,4,5])
b=set([1,2,3,4,6])
交集: print( a & b) # {1, 2, 3, 4}
并集: print( a | b) # {1, 2, 3, 4, 5, 6}
差集, 对称差集
差集: print(a.difference(b)) in a but bot b # A有的B没有的打印出来
第二种方法: print (a-b)
# {5} 反过来也一样
对称差集: print(a.symmetric_difference(b)) AB有的都不打印,只打印它共同没有的字符串或数值
第二种方法: print ( a^b )
# {5, 6}
超集,子集
print(a.issuperset(b))# A是不是完全包含B,否 返回 False 相当于A>B
print(a.issubset(b))# A是不是B的子集 相当于A<B
name1=set(["xiong","wei","hua","fa"])
name2=set(["xiong","yua","yuan","hua"])
# 子集 # 判断两个字段是否相等
print(name1<name2) # False
# 父集 # 判断两个字段是否相等
print(name1>name2) # False
# 并集 # 打印去重之后的
print(name1 | name2) # {'hua', 'xiong', 'yuan', 'wei', 'fa', 'yua'}
# 交集 # 共同有的
print( name1 & name2 ) # {'hua', 'xiong'}
# 差集 # 用集合1减去集合2的相同字段,取出与集合2不相关的
print( name1 - name2 ) # {'wei', 'fa'}
# 对称差集 # 取出A跟B有的,打印两个集合没有的字符串
print( name1 ^ name2 ) # {'yuan', 'yua', 'fa', 'wei'}
# 手动输入一些字符串与自行定义的字符串进行对比
ins=[]
b=set(['1','2','3','4','5'])
while True:
a=input("测试: ")
if a == "q":
break
ins.append(a)
ins=set(ins)
print(ins > b ) |
|