python之路_数据类型知识补充

知识点回顾与补充:

1. 数据类型

2. for和while:continue、break

  for 循环嵌套实例;

#问题:实现输出结果1 10 2
#代码1:
flag = False
    for i in range(1,10):
        print(i)
        if flag:
            break
        for i in range(10,20):
            print(i)
            flag = True
            break
#代码2:
for i in range(1,10):
    print(i)
    if i==2:
        break
    for i in range(10,20):
        print(i)
        break

3. 计算机编码
  ascii - 8位
  unicode - 16,32位
  utf-8 - 8 ~ 32位
  gbk - 16位
4. 字符串格式化
  - "asdf%s,sdfsdf%d" %('11',4)   #占位符格式化才有意义,如print("asdf%s,sdfsdf%d")输出内容不变
  - "asdf%s,sdfsdf%%" %'11'         #字符串格式化中要保留%需要写两个%%

补充知识:(用变量对含占位符字符串进行表示,方便多次字符串格式化调用)

#实例:
tpl = "我叫%s,你好!"
name1 = tpl %('骑兵',)
name2 = tpl %('步兵',)
print(name1,name2)

5. 变量
  不要使用python中已经使用的变量:list,str,tuple,dict,bool
6. 条件语句
7. 长度
  len(xxxx)

8. 索引操作

  可以应用于如下数据类型:str、list、tuple、dict

9. 运算符
  - 除法    #除法/:python2中得整数商,python3中为正常除法,而python3中整数商除法为://
  - 字符串相乘   #可以将字符串多次重复
  - 逻辑运算符or and    #按顺序判断,当遇见or时结果为真,后面内容不再执行 
  - in  

in判断实例展示:
  dic = {'k1': 'v1','k2': 'v2'}

  li = [11,22,33,44]

# (1)列表,查看是否存在其中
  if 11 in li:
    pass
# (2)字典,查看key是否在其中
  a.for item in dic:
    print(item)
  b.for k in dic.keys():
    print(k)
  c.if "k1" in dic:
    pass
#( 3) 字典,查看value是否在其中

  循环实现,检查“v1”是否在字典 dic = {'k1': 'v1','k2': 'v2'} 的值中

#方法1
dic = {'k1': 'v1','k2': 'v2'}
val = "v1"
for v in dic.values():
  if val in v:
    print(True)
#方法2
dic = {'k1': 'v1','k2': 'v2'} 
val = "v1"
result = False
for item in dic.values():
    if item == val:
        result = True
    break
print(result)
        

10. py2与py3(前者为py2)
  用户输入函数:
    raw_input()
    input()

  range():
    range()   #生成连续数字,列表类型
    xrange() #for循环时才能使用,未知类型

    range()
  编译器默认使用的编码类型:
    ascii(代码前加:#-*-encoding:utf-8 -*-可以更改为utf-8编码)
    utf-8

  输入函数:

    print "alex"   #一般没有括号,有也是可以
    print('alex')  #必须有括号
11. 字符串方法(字符串本身不变化)

  #name="asdwwbaaknmcnAKHL"
  a. 大小写:name.upper()、name.lower()
  b.首字母大写:name.capitalize()

  c.分割:a,b = split('*',1)

  d.去除空白:strip  e. 替换:replace

  f. "xx".join(["11","22",])
 
 g.是否是十进制数

  h.判断是否以什么开头或者结尾:startwith()/endwith()
12. 列表
  - 追加:append()
  - 插入:insert()
  - 反转:reverse()
  -长度:len()
    -for循环

补充:
 问题:索引为奇数值,删除
  # 删除列表元素时,会影响列表长度,从而使得索引取值时,容易出现错误。
  例题:li = [11, 22, 33, 44, 66]     # 索引为奇数值,删除

思路1:

# 解决方案一:
li = [11, 22, 33, 44, 66]
new_list = []
for i in range(0,len(li)):
    if i%2 == 0:
        new_list.append(li[i])
li = new_list
print(li)

# 解决方案二:
li = [11, 22, 33, 44, 66]
for i in range(len(li)-1,-1,-1):
    if i%2 == 1:
        del li[i]
print(li)

思路2:切片+步长

li = [11, 22, 33, 44, 66] 
del li[0:4:2]
print(li)

13. tuple
  - 元素,不可变
  - 只有一个元素时,一定加逗号

#例1:
val = (1) print(type(val)) #输出结果为:整数类型 #例2: val = (1,) print(val,type(val)) #输出结果为:元组类型

14. dict

get方法(get方法提取字典元素时,即使key不存在也不会报错,输出None):

实例:
dic
= {'k1':"v1",'k2':'v2'} data = dic.get('kk1') print(data) #None

出错点:
  例 题:dic = {'u1':"v1",'k2':'v2','k3':'v3'}把key中存在k,键值对删除

  Tips:不要在循环当前字典的过程中,修改当前字典大小

# 错误方法:
dic = {'u1':"v1",'k2':'v2','k3':'v3'}
 for key in dic:
    if 'k' in key:
        del dic[key]
print(dic)

# 正确方式
dic = {'u1':"v1",'k2':'v2','k3':'v3'}
dic_key_list = []
for key in dic:
    dic_key_list.append(key)
for row in dic_key_list:
    if 'k' in row:
        del dic[row]
print(dic)

14. int
  - 最少用多少二进制位表示:bit_length()
15. 数据类型的相互转换

#字符串与整数
v = "123"
val = int(v)

v = 123
val = str(v)

#元组与列表
v = (1,2,3,)
val = list(v)
    # val = []
    # for item in v:
    # val.append(item)

v = [11,22,33,44]
val = tuple(v)

16. 布尔值
  - True,False
  -常见 False情况: 0,None,"",{},[],()

posted @ 2017-08-22 19:18  骑猪走秀  阅读(194)  评论(0编辑  收藏  举报