爱死你了 发表于 2018-8-9 08:16:03

python_day2_数据格式

  本章目录
  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)
  
  >>> range(1,3)
  
  >>> range(1,100,2)从1开始100结束,步长2
  forexam in enumerate(数组) 自动增加一个编号
  forexam,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个索引,意为第一个值
  打印结果为:aa
  print(a)# 从左往右,从第2个值一直到第4个值
  打印结果为:['bb', 'cc']   顾头不顾尾,最后一个不打印出来
  print(a) # 从第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='hc'# 将原先插入的第2个值hh直接修改为hc
  打印结果为:['aa', 'bb', 'hc', 'dd', 'ee', 'ff']
  a=['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) # 删除指定值的下标,如不清楚内容的情况下,可以用这种方式
  # 打印结果为:['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 ,简单粗暴,但危险
  统计出现的字符串: 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=
  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 = {&quot;name&quot;:&quot;xiong&quot;, &quot;age&quot;:33,}
  dic[&quot;age&quot;]=34
  dic2 = {'1':'111','2':'222'}
  dic.update(dic2)# 跟列表中extend功能一样
  结果为 {&quot;name&quot;:&quot;xiong&quot;, &quot;age&quot;:33, '1':'111', '2':'222'}
  删除
  del dic1[&quot;name&quot;]结果: 删除name的键值对
  del dic1 结果: 删除整个字典
  dic1.clear()结果: 清空字典
  dic5.pop(&quot;age&quot;)结果: 删除字典中指定键值对,并返回该键值对的值
  # 随机删除一个键值对,并以元组方式返回值
  dic1.popitem()
  2.4.6fromkeys
  其它操作以及涉及到的方法
  dic3=dict.fromkeys([&quot;h1&quot;,&quot;h2&quot;,&quot;h3&quot;],&quot;hhh&quot;)
  print(dic3)得出结果 {'h1': 'hhh', 'h2': 'hhh', 'h3': 'hhh'}
  # 将多个值赋值给多个键
  dic3=dict.fromkeys([&quot;h1&quot;,&quot;h2&quot;,&quot;h3&quot;],[&quot;hhh&quot;,&quot;ggg&quot;])
  print(dic3)结果:{'h1': ['hhh', 'ggg'], 'h2': ['hhh', 'ggg'], 'h3': ['hhh', 'ggg']}
  字典的嵌套
  data = [
  {&quot;1&quot;,22 },
  {&quot;2&quot;,33 },
  ]
  排序
  # 返回一个有序的包含字典所有key的列表
  print(sorted(dic3.items()))
  结果: [('h1', ['hhh', 'ggg']), ('h2', ['hhh', 'ggg']), ('h3', ['hhh', 'ggg'])]
  遍历
  dic1=dict(((&quot;name&quot;,&quot;xiong&quot;),(&quot;age&quot;,33),))
  for i in dic1:
  print(i,dic1)
  2.4.7 set
  set: 把不同的元素组成一起形成集合,是py基本的数据类型
  # 去重功能,当有两个相同的元素的时候会去掉重复的字符串
  # 必须是可hash的字符串,set是无序的,只能通过循环遍历或使用in、not in来访问或判断集合元素
  # set 不能做为键
  更新set集合_添加
  a = [&quot;a&quot;,&quot;b&quot;]
  c=set(a)
  c.add(&quot;c&quot;)
  print(c)结果: {'b', 'a', 'c'}
  update
  c.update(&quot;ab1&quot;)
  print(c)结果: {'b', '1', 'a', 'c'}
  # ab1 做为一个序列添加,有重复的不会添加序列, 没有重复的会直接添加到列表中
  c.update()# 当为列表时,它会将序列当成一个整体加入到变量中,有重复的也不会添加
  print(c)# {321, 'b', 'a', 123}
  remove, pop, clear, del
  c.remove(&quot;a&quot;) 结果: {'b', '1', 'c'}
  c.pop()结果: 随机删除一个
  c.clear()# 结果: 清空列表 返回 set()
  del c # 直接删除变量,打印报错因为已经没了
  交集,并集
  a=set()
  b=set()
  交集: 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([&quot;xiong&quot;,&quot;wei&quot;,&quot;hua&quot;,&quot;fa&quot;])
  name2=set([&quot;xiong&quot;,&quot;yua&quot;,&quot;yuan&quot;,&quot;hua&quot;])
  # 子集      # 判断两个字段是否相等
  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(&quot;测试: &quot;)
  
    if a == &quot;q&quot;:
  
      break
  
    ins.append(a)
  

  
ins=set(ins)
  

  
print(ins > b )
页: [1]
查看完整版本: python_day2_数据格式