第三章.数据类型

3.1 整型(int)

  • 整型的长度

    py2:int/long

    py3:int

  • 整除

    py2:做整除后商只保留整数

    py3:做整除后商保留全部

3.2 布尔值(bool)

布尔值用于表示真假,只有两种结果True/False

转换问题

  • str --->bool 只有""为False,其他均为True

  • int --->bool 只有0为False,其他均为True

  • list--->bool 只有[]为False,其他均为True

  • tuple--->bool 只有()为False,其他均为True

  • dict--->bool 只有{}为False,其他均为True

  • set--->bool 只有set()为False,其他均为True

  • None--->bool 为False

3.3 字符串(str)

3.3.1字符串的特有方法

字符串是写代码中最常见的,reduce

1.变大写 upper

v = "alexALEX"
v1 = v.upper()
print(v1)
v2 = v.isupper()  #判断是否全部大写
print(v2)

2.变小写 lower

v = "alexALEX"
v1 = v.lower()
print(v1)
v2 = v.islower()  #判断是否全部小写
print(v2)

3.判断是否为数字 isdecimal

以后推荐用 isdecimal 判断是否是10进制的数。

v = '1'
# v = '二'
# v = '②'
v1 = v.isdigit()   # '1'-> True; '二'-> False; '②' --> True
v2 = v.isdecimal() # '1'-> True; '二'-> False; '②' --> False
v3 = v.isnumeric() # '1'-> True; '二'-> True; '②' --> True
print(v1,v2,v3)

4.分割 split

v = "alexALEX"
b = v.split('l')
print(b)    #['a', 'exALEX']切割后得到的是一个列表
v = "alexALEX"
b = v.rsplit('l')
print(b)

5.替换 replace

v = "alexALEX"
b = v.replace('l','*')
print(b)

6.去空格/ 去换行\n /去制表符\t /去指定字符串 strip

  • 去空格

    v = "       alexALEX          "
    v1 = v.strip()  #去全部空格
    print(v1)
    v2 = v.lstrip()  #去左边空格
    print(v2)
    v3 = v.rstrip()  #去右边空格
    print(v3)
    
  • 去换行\n

    v2 = "alex\nqwer\n"
    print(v2)  #alex qwer
  • 去制表符\t

    制表符\t:在字符串中使用,一般放在文章开头,做缩进用

    v3 = "\talex"
    print(v3.strip())
  • 去指定字符串

    去掉字符串两边所有a和l

    v4 = "aldaexaaall"
    print(v4.strip('al'))  #daex

7.以某某开头startswith

name = 'qwertyuiop'
if name.startswith('qw'):
   print(name)

8.以某某结尾endswith

name = 'qwertyuiop'
if name.endswith('qw'):
   print('是')
else:
   print('不是')

9.占位符format

name = '我叫{},年龄:{}'.format('老男孩',73)
print(name)

10.编码encode

name = '张三'
v = name.encode('gbk')
print(v)

11.添加join

name = 'qwertyuiop'
v = '_'.join(name)
print(v)   #q_w_e_r_t_y_u_i_o_p
name = ['qwertyuiop',1,2]     #name中含有数字和字符串
name2 = []
for item in name:
   name2.append(str(item))
v = '_'.join(name2)     #要想使用join,列表/集合内部必须全为字符串
print(v)
name = {'k1':'1','k2':'2'}
v = '_'.join(name)   #默认取字典的键
print(v)   #k1_k2

12.其他

3.3.2字符串格式化

  • %s:可代表所有数据类型

    #法一:
    msg = "我是%s,年龄%s" %('alex',19,)
    print(msg)
    #法二:
    msg = "我是%(n1)s,年龄%(n2)s" % {'n1': 'alex', 'n2': 123, }
    print(msg)
    #法三:
    # v2 = "我是{name},年龄{age}".format(name='alex',age=18)
    #法四:
    v2 = "我是{name},年龄{age}".format(**{'name':'alex','age':18})
    print(v2)
  • %d:专门代表整型

  • \n换行符

3.4列表(list)

列表中可以有字符串,整数,布尔,列表,元组,字典,集合,None。列表是有序的,可重复,列表是可变的。

1.append

在列表最后一个元素后追加一个元素,该元素可以是字符串,整数,布尔,列表,元组,字典,集合,None

user = ['q','w',1]
v = {1,2,3,4}
user.append(v)
print(user)   #['q', 'w', 1, {1, 2, 3, 4}]

2.insert

在指定位置添加一个元素

user = ['q', 'w', 1, {1, 2, 3, 4}]
user.insert(0,666)
print(user)

3.remove

只是移除,移除的后面加的是列表中元素

user = ['q', 'w', 1, {1, 2, 3, 4}]
user.remove('w')
print(user)

4.pop

移除,删除后将这个被删除的值赋给另一变量,pop后加入的是索引位置

user = ['q', 'w', 1, {1, 2, 3, 4}]
data = user.pop(1)
print(user)

5.clear

清空,运行后得到的是一个空列表

user = ['q', 'w', 1, {1, 2, 3, 4}]
user.clear()
print(user)   #[]

6.extend ()

将括号里面的元素循环添加到前面

v1 = ['q', 'w', 1]
v2 = {1, 2, 3, 4}
v1.extend(v2)
print(v1)

7.reverse 反转

v = [11,22,33,124,55]
v.reverse()
print(v)

8.sort 排序

v = [11,22,33,124,55]
v.sort()    #v.sort(reverse=False)从小到大(默认)
print(v)    #v.sort(reverse=True)从大到小

3.5元组(tuple)

元组是不可变的

3.6字典(dict)

字典是可变的,无序

info = {"name":'张三','age':18,'gender':'男','hobby':'打球'}
for item in info:
print(item)        #默认得到的是字典的所有键

1.keys 取所有键

info = {"name":'张三','age':18,'gender':'男','hobby':'打球'}
for item in info.keys():
print(item)        #得到的结果是一个个字符串

2.values 取所有值

info = {"name":'张三','age':18,'gender':'男','hobby':'打球'}
for item in info.values():
print(item)       #得到的结果是一个个字符串

3.items 取所有键值对

info = {"name":'张三','age':18,'gender':'男','hobby':'打球'}
for item in info.items():
print(item)
#('name', '张三')
#('age', 18)
#('gender', '男')
#('hobby', '打球')   得到的结果是一个个元组

4.update 字典中存在添加的字典中的键就更新,不存在就添加

info = {"name":'张三','age':18,'gender':'男','hobby':'打球'}
info.update({'age':19})
print(info)     #{'name': '张三', 'age': 19, 'gender': '男', 'hobby': '打球'}
info = {"name":'张三','age':18,'gender':'男','hobby':'打球'}
info.update({'身高':178})
print(info)     #{'name': '张三', 'age': 18, 'gender': '男', 'hobby': '打球', '身高': 178}

5.get

获取字典中该键对应的值,如果字典中不存在该键,就输出None,

info = {"name":'张三','age':18,'gender':'男','hobby':'打球'}
v = info.get('k1111')
print(v)      #None

如果获取字典中该键对应的值,如果字典中不存在该键,就输出后面的值

info = {'K1':'V1','K2':'V2','K3':'V3'}
v1 = info.get('k1111',666)
print(v1)    #666

6.pop

删除后将该删除的值赋给另外一值

info = {'K1':'V1','k2':'V2','K3':'V3'}
v = info.pop('k2')
print(info,v)   #{'K1': 'V1', 'K3': 'V3'} V2

7.有序字典

字典是无序的,但可以通过导入模块让其有序

from collections import OrderedDict
info = OrderedDict()
info['k1'] = 123
info['k2'] = 456
print(info.keys())
print(info.values())
print(info.items())
from collections import OrderedDict
odic = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(odic)
for k in odic:
   print(k,odic[k])

3.7集合(set)

集合里面的元素都是不可变类型,可添加字符串,整型,布尔,元组,None

1~3是对集合本身进行操作

1.add 添加

info = {'K1','k2','K3'}
info.add('v1')
print(info)   #{'v1', 'k2', 'K1', 'K3'}

2.update 更新

info = {'K1','k2','K3'}
info.update({1,2,3,(4,5)})
print(info)   #{1, 2, 3, (4, 5), 'k2', 'K1', 'K3'}

3.discard 删除

info = {'K1','k2','K3'}
info.discard('K1')
print(info)   #{'k2', 'K3'}

4.union 并集

v1 = {1,2,'张三'}
v2 = {1,2,'李四'}
result = v1.union(v2)
print(result)   #{'张三', 1, 2, '李四'}

5.intersection 交集

v1 = {1,2,'张三'}
v2 = {1,2,'李四'}
result = v1.interestion(v2)
print(result)   #{1,2}

6.difference 差集

v1 = {1,2,'张三'}
v2 = {1,2,'李四'}
result1 = v1.difference(v2)
print(result1)     #{'张三'}
result2 = v2.difference(v1)
print(result2)     #{'李四'}

7.pop

8.symmetric_difference(对称差分)

3.8 字节(bytes)

字节类型

3.9深浅拷贝

  • 浅拷贝:浅拷贝就是拷贝第一层

  • 深拷贝:深拷贝就是拷贝嵌套层次中所有可变类型

3.10公共功能

  • 索引:(int,bool,set除外)

  • 切片:(int,bool,set除外)

  • 步长:(int,bool,set除外)

  • len:(int,bool除外)

    • str :字符串长度

    • list:列表内元素个数

    • tuple:元组内元素个数

    • dict:字典内键值对个数

    • set:集合内元素个数

    v = 'qwertyuiop'
    print(len(v))     #10
  • for循环(int,booi除外)

  • del(str,int,booi,tuple,set除外)

  • 修改(str,int,bool,tuple,set除外)

3.11嵌套

 

3.12内存相关

  • 内部修改

    v1 = [11,22,33]
    v1.append((44,55))
    print(v1)     #[11, 22, 33, (44, 55)]
  • 赋值

    v1 = [11,22,33]
    v2 = v1
    v1 = [1,2,3,4]
    print(v2)       #[11,22,33]
  • 查看内存地址

    v1 = [11,22,33]
    v2 = v1
    print(id(v1),id(v2))   #38544968 38544968二者内存地址一样
  • 几个特殊情况

    在python中认为所有字符串,数字-5~256内存地址相同

posted @ 2019-04-29 17:29  Primrose  阅读(152)  评论(0编辑  收藏  举报