python学习之基本数据类型

一、基本数据类型

1、整形-int

2、字符串-str

3、布尔值-bool

4、列表-list

5、元组-tuple

6、字典-dict

二、整形数据类型——int

在python3中,整数类型的值不论有多大,都是属于int。

在python2中,整数类型的值在一定的范围内数据类型为int;超出了这个范围的数据类型为long长整形。

其实在java的数据类型中也是有int、long、short类型的划分,但是具体的划分标准没有深入的了解,等对python有了一定的了解后再回顾进行编辑。

1 a = 123
2 print(a)

1、int方法罗列

(1)、int.bit_length():计算出该整形数以二进制表示出来需要使用多少位二进制——至少使用多少位二进制来进行表示

1 a = 123
2 # a_binary表示整型数a的二进制
3 # a_length 表示整型数a以二进制显示需要多少位二进制
4 a_binary = bin(a)
5 a_length = a.bit_length()
6 print(a, a_binary ,a_length)
7 # 运行结果为:123 0b1111011 7;其中a_binary的值0b111101中的0b表示以二进制表示

2、str:字符串类型转换为int:整型

1 a = "123"
2 # 将字符串123转化为整型123
3 b = int(a)
4 # 从打印结果可以a:123为str类型
5 #             b: 123为int类型
6 print(a,type(a))
7 print(b,type(b))
8 # 打印结果为:123 <class 'str'>
9 #            123 <class 'int'>        

注:type():可以输出值的数据类型;

3、字符串str转换为int(2)

1 a = "100111"
2 # 如果直接书写为int(a)表示为默认以10进制的方式进行转换
3 a_10 = int(a)
4 # base=2以二进制的方式进行转换
5 a_2 = int(a,base=2)
6 # base=16以16进制的方式进行转换
7 a_16 = int(a,base=16)
8 print(a_10,a_2,a_16)

三、字符串str

在str字符串的方法中如果参数=none表示该参数可有可无,不是必须要写入的参数

1、capitalize :将字符串的首字符大写,其余字符小写;

用法:a.capitalize()

1 name = "tENgjiAng"
2 # 将字符串的第一个字符大写,其余小写
3 a = name.capitalize()
4 print(a)
5 #输出结果如下:Tengjiang

2、casefold/lower:将字符串全部转换为小写

用法:b.casefold()  b.lower()

1 name = "tENgjiAng"
2 b = name.casefold()
3 # b = name.lower()
4 print(b)
5 #输出结果:tengjiang
name = "tENgjiAng"
# 将字符串的第一个字符大写,其余小写
 b = name.lower()
print(b)
# 输出结果:tengjiang

注:casefole与lower方法比较:

  从代码执行的结果可以看出两方法结果是一致的,说明两者的功能是一样的;

  区别:casefold方法更全面,很多未知的大小写对应关系都可以进行转换;

     lower方法只能对通俗的英文大小写进行转换;

3、center:将字符串居中,指定参数可以指定长度内居中并将空白处用指定的字符填充

用法:a_center = a.center(20,"*")将字符串a在长度20的范围内居中,并用“*”号将空白处填充

1 # 字符串a
2 a = "it's ends"
3 # 在长度为20的字符串里面居中a字符串并用*号填充空白
4 a_center = a.center(20,"*")
5 # a_center_len统计a_center的长度是否为20;
6 a_center_len = a_center.__len__()
7 print(a_center,a_center_len)
8 # 输出结果:*****it's ends****** 20

注:从输出结果中可以看出当剩余的空白为偶数:两边填充的字符一样;

  当剩余的空白为奇数时,左边填充少于到右边填充数

4、count:计算子字符串在字符串中出现的次数

使用方法:a.count("b",5,6)计算字符b在字符串a中从第5到第6个字符中出现的次数

1 a = "chongbqing"
2 a_count = a.count("b",5,5)
3 a_count1 = a.count("b",5,6)
4 # 输入串结果分别为:0 1
5 print(a_count,a_count1)
6 # 从结果中可以看出5、6是值的是字符串a的脚标

5、encode、decode

该方法还未学习到,暂时先搁置在这儿

6、endswith:判断是否字符串是否以子字符串结束,返回布尔值

使用方法:a.endswith("b"),也是可以写入其他参数的:开始位置,结束位置

a = "chongqing"
a_endswith1 = a.endswith("g")
a_endswith2 = a.endswith("ing")
a_endswith3 = a.endswith("q")
print(a_endswith1,a_endswith2,a_endswith3)
# 输出结果为:True True False

7、startwith:判断字符串是否以子字符串、字符开始,返回布尔值

使用方法:a.startwith("b"),

代码同endswith,在此就不在贴码了

8、find:从首字符往后查找,找到第一个后,获取位置,不在继续查找;输出结果返回index,结果为-1表示在指定的位置没有找到

使用方法:a.find("substr",start,end)

1 a = "chongqing"
2 b = a.find("ing",4)
3 b = a.find("ing",4,8)
4 print(b)
5 # 输出结果为:6
6 # 从结果可以看出参数缺省end参数,表示查找到字符串末尾;

9、format:格式化,将一个字符串的占位符替换为指定的值

 

1 a = "I am {name},{age},from {address}"
2 print(a)
3 v = a.format(name="tengjiang",age=19,address="chongqing")
4 # 运行v1的时候报错了,提示keyerror:'address',说明format方法的占位符必须全部要一一对应
5 # v1 = a.format(name="tengjiang",age=19)
6 print(v)
7 # 输出结果:I am {name},{age},from {address}
8 # I am tengjiang,19,from chongqing

10、format_map:该方法没有搞懂,待搞懂了在回顾补充

 

11、index:与find功能一致,唯一的区别在于index找不到要报错,而find方法找不到返回的值为-1

 1 a = "chongqing"
 2 # 我没有搞懂为什么b = a.index("ng",5,8)会报错;b1 = a.index("ng",5)我采用这种格式就能找到
 3 # b = a.index("ng",5,8)
 4 b1 = a.index("ng",5)
 5 b2 =  a.index("ng")
 6 b3 =  a.index("ng",4)
 7 # b4也是错误的,为什么呢,没搞懂,在builtins.py中index的格式也是start与end参数的
 8 # 原因排查:a、我格式是书写正确了的;
 9 # 原因排查:b、我的脚标是8是没有超出字符串a的脚标的最大长度的,因为在java中当数组的脚标超出了字符串脚标的最大长度时,是会报错的
10 # 原因排查:c、在网上查询后,还是没有找到原因
11 # 原因排查:d、将参数end=8换成a._len_()结果执行成功了
12 # 原因排查:e、计算字符串a的长度确认是否等于8:b6 =a.__len__():输出结果为9,那说明字符串a的脚标最大为8是没有问题的啊
13 #b4= a.index("ng",5,8)
14 b6 =a.__len__()
15 b5 =  a.index("ng",4,a.__len
1 a = "123"
2 v = a.isalnum()
3 print(v)  #输出结果为:True
4 a = "sbd c"
5 v = a.isalnum()
6 print(v) #False

 

__())
16 print(b6)
17 print(b1,b2,b3,b5)
18 # 输出的结果为:9 字符串a的长度
19 #  输出的结果为:7 3 7 7

注:# b = a.index("ng",5,8)语句报错,还未解决!

####后期咨询验证,了解到a.index("ng",5,8)表示的范围为5<=index<8,是没有包含脚标8的;

12、isalnum:用来判断字符串是否全部为数字或者字母,返回布尔值;;如果有其他字符或者空格(返回false)

1 a = "sbd"
2 v = a.isalnum()
3 print(v) #返回:True
4 
5 # a = " teng  "
6 # # print(a.isalnum()) #返回:False

13、isalpha:用来判断字符串是否由字母组成;返回布尔值

1 a = "adb"
2 v = a.isalpha()
3 print(v) #返回True
4 # a = "  adb"
5 # v = a.isalpha()
6 # print(v) #返回False

14、isdecimal:判断字符串是否为十进制的数字;

  isdigit:判断字符串是否为十进制的数字,还可以判断特殊的数字编号如:②

  isnumeric:判断是否为十进制的数字,可以判断特殊的数字编号:②,还可以判断中文的数字如:二、十

 1 ######isdecimal#######
 2 # a = "123"
 3 # v1 = a.isdecimal() #返回True
 4 # a = "②"
 5 # v1 = a.isdecimal()  #返回False
 6 a = ""
 7 v1 = a.isdecimal()  #返回False
 8 print(v1)
 9 ########isdigit#######
10 a = "123"
11 v1 = a.isdigit() #返回True
12 # a = "②"
13 # v1 = a.isdigit()  #返回True
14 # a = "二"
15 # v1 = a.isdigit()  #返回False
16 print(v1)
17 ########isnumeric#########
18 
19 # a = "123"
20 # v1 = a.isnumeric() #返回True
21 # a = "②"
22 # v1 = a.isnumeric()  #返回True
23 a = ""
24 v1 = a.isnumeric()  #返回True
25 print(v1)

 15、isidentifier 判断是否为标识符

标识符:

 在python里,标识符有字母、数字、下划线组成。
 在python中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
 python中的标识符是区分大小写的。
 以下划线开头的标识符是有特殊意义的。以单下划线开头(_foo)的代表不能直接访问的类属性,需通 过类提供的接口进行访问,不能用"from xxx import *"而导入;
 以双下划线开头的(__foo)代表类的私有成员;以双下划线开头和结尾的(__foo__)代表python里 特殊方法专用的标识,如__init__()代表类的构造函数

备注:该标识符摘自:https://www.cnblogs.com/liuzhenhua0122/p/6682159.html

 

1 a = "sum"
2 v = a.isidentifier()
3 print(v)  #输出True

16、islower:判断是否是小写

  isupper:判断是否为大写

# a = "sum"
# v = a.islower()
# print(v) #输出True
a = "sum"
v = a.isupper()
print(v) # 输出False

17、isprintable:判断打印时是否有不显示的字符

a = "abc\tefg\nmail"
print(a.isprintable()) # 输出False
print(a)  #输出  abc    efg
          #输出  mail

18、isspace判断是否为空格

1 # a = "   "
2 # print(a.isspace()) # 输出True
3 # a = "abc  "
4 # print(a.isspace()) # 输出False
5 a = "a  sbc"
6 print(a.isspace()) # 输出False

19、istitle判断是否为标题

标题首字符全部大写

1 # a = "This Is An Apple"
2 # print(a.istitle())  #输出True
3 a = "This Is An apple"
4 print(a.istitle()) # 输出False

20、join将字符串中的每个元素按照按照指定的分隔符进行拼接******

1 a = "别问我花儿是为谁红"
2 # a_join =" ".join(a)
3 # print(a_join)   #输出:别 问 我 花 儿 是 为 谁 红
4 a_join1 = "_".join(a)
5 print(a_join1)  #输出:别_问_我_花_儿_是_为_谁_红

21、ljust:对字符串左边使用指定字符填充

  rjust:对字符串右边使用指定字符串填充

  zfill:指定0进行填充

  center:

1 a = "python"
2 # v = a.center(20,"*")  #输出:*******python*******
3 # v = a.ljust(20,"*")   #输出:python**************
4 # v = a.rjust(20,"*")   #输出:**************python
5 v = a.zfill(20)   #输出:00000000000000python
6                   # 指定0进行填充,该方法不常用,因为center、ljust、rjust已经能够满足所有的填充要求
7 print(v)

22、lower:转换为小写

  upper:转换为大写

#我们平时输入网址时输入大写和小写都是可以进行访问的,因为提交时就已经转换为小写了!

#在登录时,账号输入大小写也是可以进行登录,也是因为提交时进行转换了的,这种很少见!

23、strip:默认清除所有的空格;指定参数,去除指定参数、指定子字符串;

  lstrip:默认清除左边的空格、\t、\n;指定参数,去除左边指定参数、指定子字符串;从左边开始找,找到第一个就不在继续查找去除;

  rstrip:默认清除右边的空格、\n、\t;指定参数,去除右边指定参数、指定子字符串;从右边开始找,找到第一个就不在继续查找去除;

  

1 a1 = "pythonpy"
2 # print(a1.strip("py")) #输出结果为:thon
3 # print(a1.lstrip("py"))  #ss输出结果为:thonpy
4 print(a1.rstrip("py"))  #输出结果为:python

24、maketrans:创建对应关系,然后使用traslate进行替换

1 a = "pathon"
2 v = str.maketrans("a","y")
3 new_v = a.translate(v)
4 print(new_v)  #输出:python

25、partition:按照指定字符进行分割:从左边往右边找到第一个指定字符然后分割;

  rpartition:按照指定字符进行分割:从右边往左边找到第一个指定字符然后分割;

  #两者都保留了指定分割符

1 a = "pathon_pycharm_day11"
2 # v = a.partition("_")   #输出:('pathon', '_', 'pycharm_day11')
3 v = a.rpartition("_")  #输出:('pathon_pycharm', '_', 'day11')
4 print(v)

26、split:按照指定分隔符分割,分割符去掉

  rsplit:按照指定分隔符分割,分隔符去掉

  ps:partiton与split功能的结合就是正则表达式的应用

 1 a = "pathon_pycharm_day11"
 2 # v = a.split("_") #输出:['pathon', 'pycharm', 'day11'] <class 'list'>
 3 
 4 # "_"指定分隔符;1为从左边往右边找,找到第一个就停止继续查找
 5 # v = a.split("_",1)  #输出:['pathon', 'pycharm_day11'] <class 'list'>
 6 
 7 # "_"指定分隔符;1为从右边往左边找,找到第一个就停止继续查找
 8 # v = a.rsplit("_",1) #输出:['pathon_pycharm', 'day11'] <class 'list'>
 9 v = a.rsplit("_",2) #输出:['pathon', 'pycharm', 'day11'] <class 'list'>
10 print(v,type(v))

  splitlines:按照换行符进行分割

1 a = "username\npasswd\nmail" 
2 
3 # 参数:True保留换行符
4 v = a.splitlines(True) #输出:['username\n', 'passwd\n', 'mail']
5 
6 #参数:False不保留换行符
7 # v = a.splitlines(False) #输出:['username', 'passwd', 'mail']
8 print(v,a)

27、startswith:判断字符串是否以子字符串开头

  endswith:判断字符串是否以子字符串结束

1 a = "python_pycharm"
2 # v = a.endswith("rm") #输出:True
3 v = a.startswith("py") #输出:True
4 print(v)

 

28、swapcase 大小写转换:大写转换为小写;小写转换为大写

a = "Python"
v =  a.swapcase()  #输出:pYTHON
print(v)

 29、expandtabs:分隔、断句,特殊适合用于断句

str_user_inform = "用户名\t密码\t邮箱\t电话\t备注\n张三\tzhangsan\tzhangsan@qq.com\t18502337951\t\n张三\tzhangsan\tzhangsan@qq.com\t18502337951\t\n张三\tzhangsan\tzhangsan@qq.com\t18502337951\t\n张三\tzhangsan\tzhangsan@qq.com\t18502337951\t\n"
v2 = str_user_inform.expandtabs(20)
print(v2)

 输出结果

用户名                 密码                  邮箱                  电话                  备注
张三                  zhangsan            zhangsan@qq.com     18502337951         
张三                  zhangsan            zhangsan@qq.com     18502337951         
张三                  zhangsan            zhangsan@qq.com     18502337951         
张三                  zhangsan            zhangsan@qq.com     18502337951     

 30、replace:替换原子字符串

name = "zhangsanlisiliwuzhaoli"
v = name.replace("li","si")
print(v)
name1 = "zhangsanlisiliwuzhaoli"
###第三个参数为替换多少次
v1 = name1.replace("li","si",2)
print(v1)
##输出结果:
zhangsansisisiwuzhaosi
zhangsansisisiwuzhaoli

  

*************************************************************

***************************************************

                      字符串Str方法小结

*************************************************************

*************************************************************

1、字符串方法中最常用的的方法

(1)、join    #指定字符连接

(2)、split   #指定分割符进行分割

(3)、find  

(4)、strip

(5)、upper

(6)、lower

(7)、replace

2、字符串使用扩展

(1)、for循环

# for 变量名 in 字符串:
#     变量名
# break
# continue


# index = 0
# while index < len(test):
#     v = test[index]
#     print(v)
#
#     index += 1
# print('=======')

# for zjw in test:
#     print(zjw)

# test = "妹子有种冲我来"
# for item in test:
#     print(item)
#     break

# for item in test:
#     continue
#     print(item)

(2)、通过索引获取字符串中的字符

1 # v = test[3]
2 # print(v)

(3)、切片

1 # v = test[0:-1] 
2 # print(v)

(4)、len,获取字符串长度

# Python3: len获取当前字符串中由几个字符组成
# v = len(test)
# print(v)
#在Python2:len获取当前字符串中有几个字节

(5)、range创建连续或者不连续的数字

1 #range创建连续的数字
2 v=range(100)    #等价于range(0,100)
3 print(v)
4 #在python3里面,不会立即创建,这是一个优化内存机制,只有在for循环的#时候才会打印
5 #在python2里面,会立即创建,占用大量内存
6 v=range(0,100,5)  #按照步长打印
7 v=range(len(input()))

(6)、index,将索引与对应的值打印出来

 1 # 第一种
 2 v = input("请输入你的理想,少年:")
 3 v_length = v.__len__()
 4 v_index = range(v_length)
 5 for i in v_index:
 6     print(i,v[i])
 7 # 第二种
 8 v = input("请输入你的理想,少年:")
 9 for i in range(0,len(v))
10     print(i,v[i])

 

3、关于字符串的误区

# 字符串一旦创建,不可修改
# 一旦修改或者拼接,都会造成重新生成字符串

1 name = "zhangsan"
2 age = "18"
3 
4 info = name + age
5 print(info)

 

四、列表、list

1、list:列表特点,li = [1,3,4,5,6,"list"]

(1)、中括号括起来

(2)、分割每个元素,逗号分割

(3)、列表中的元素可以是数字、字符串、列表、布尔值等,所有的数据类型都可以

(4)、列表是可以嵌套的,被嵌套的list算作一个元素

(5)、集合,内部可以放置任何类型的数据

(6)、可以通过索引取值,可以一层一层往下找;切片的结果也是列表;

(7)、可以进行迭代,循环:for  in、while循环

  备注:a、对于字符串转换为列表:list(),内部使用的for循环;

     b、数字是不能进行循环的;

     c、列表转换为字符:列表中都是字符串可以通过join方法直接连接;列表中数字字符串,需要自己写for循环

1 s =""
2 for i in li:
3 s = s+str(i)
4 pritn(s)

 

(8)、列表的元素是可以进行修改的,也可以进行切片进行修改,

(9)、列表是有序的,存放元素的时候,每个元素后面保存有下一个元素的位置,类似于c语言中的链表

(10)、可以进行删除:del li[1]、切片方式删除:del li[1:3]

 2、list方法

(1)、append:在原来的列表基础上追加元素

1 a = [11,22,33,444]
2 v = a.append(555)   
3 print(v,a)  #输出:None [11, 22, 33, 444, 555]

(2)、clear:清空列表

1 a = [11,22,33,444]
2 a.clear()
3 print(a)  

(3)、copy:复制拷贝:浅拷贝

1 a = [11,22,33,444]
2 v = a.copy()
3 print(a,v) 

准备:赋值操作、浅拷贝、深拷贝

a、赋值:其实就是对象的引用(别名)

 

 

b、浅拷贝:拷贝父对象,不会拷贝对象的内部的子对象

 

 

 

 

c、深拷贝:copy模块的deepcopy方法,完全拷贝了父对象及其子对象

 

 

(4)、count计算元素出现的次数

1 a = [11,22,33,444,22,444]
2 v = a.count(44)
3 print(v) # 输出:0

(5)、extend:扩展原来的列表

  备注:append与extend的区别:

 1 a = [11,22,33,444,22,444]
 2 # 当append的是list时,直接将追加的列表当做一个元素放入list中
 3 # a.append([55,"python","pycharm"]) #输出:[11, 22, 33, 444, 22, 444, [55, 'python', 'pycharm']]
 4 
 5 # 当append一个字符串时,直接将字符串作为一个元素放入list中
 6 a.append("zhangsan") #输出:[11, 22, 33, 444, 22, 444, 'zhangsan']
 7 print(a)
 8 
 9 b = [11,22,33,444,22,444]
10 
11 # 当extend的是list时,将列表中的每个元素作为元素放入list中
12 # b.extend([55,"python","pycharm"]) #输出:[11, 22, 33, 444, 22, 444, 55, 'python', 'pycharm']
13 
14 #当extend的是字符串时,将字符串中的每个字符放入list中
15 b.extend("zhangsan") # 输出:[11, 22, 33, 444, 22, 444, 'z', 'h', 'a', 'n', 'g', 's', 'a', 'n']
16 print(b)

(6)、index查找指定的值的索引,从左往右找,找到第一个后就不在继续查找

1 b = [11,22,33,444,22,444]
2 print(b.index(22)) #输出:1

(7)、insert:指定索引位置插入元素

1 b = [11,22,33,444,22,444]
2 b.insert(2,555)
3 print(b)    #输出:[11, 22, 555, 33, 444, 22, 444]

(8)、pop 默认删除最后一个元素,并获取删除的值;加入参数,删除指定索引的值

1 b = [11,22,33,444,22,444]
2 # v = b.pop() #删除指定的值 输出:[11,22,33,444,22]
3 v = b.pop(1) # 将index索引值为1的元素删除 输出:[11, 33, 444, 22, 444]
4 print(b)

(9)、remove:删除列表中的指定值,从左到右

1 b = [11,22,33,444,22,444]
2 # v = b.remove(11) #输出:[22, 33, 444, 22, 444],删除指定的值
3 v = b.remove(22) #输出:[11, 33, 444, 22, 444],从左到右,删除找到的第一个值,不在继续查找
4 print(v,b)

(10)、reverse:将当前列表进行翻转

1 b = [11,22,33,444,22,444]
2 b.reverse() #输出:[444, 22, 444, 33, 22, 11]
3 print(b)

(11)、sort:默认参数进行从小到大排序;sort(True)从大到小

1 b = [11,22,33,444,22,444]
2 # b.sort() #输出:[11, 22, 22, 33, 444, 444]
3 b.sort(reverse=False)#输出:[11, 22, 22, 33, 444, 444]
4 # b.sort(reverse=True) #输出:[444, 444, 33, 22, 22, 11]
5 print(b)

 

五、元组:tuple

元组不可以被增加、删除、修改

1、tuple方法

(1)、count 统计元素出现在元组中的次数

a = (11,22,33,44,11,33,)
print(a.count(11)) #输出:2

(2)、index获取指定元素在元组中的出现的次数

1 a = (11,22,33,44,11,33,)
2 print(a.index(33) #查找到第一个后不再继续查找;输出:2

2、tuple扩展

(1)、书写格式:一般在最后一个元素中加入“,”,便于区分

  tu = (111,"alex",(11,22),[(33,44)],True,33,44,)

(2)、索引:可以通过索引进行查找元素

(3)、可以进行切片

  v = tu[0:2]

  print(v)

(4)、可以被for循环,可以进行迭代

a = (11,22,33,44,11,33,)
for item in a:
    print(item)

(5)、转换:元组、列表、字符串之间的转换

 1 s = "asdfasdf0"
 2 li = ["asdf","asdfasdf"]
 3 tu = ("asdf","asdf")
 4 # 字符串转换为元组:将每个字符作为一个元素转换为元组
 5 # v = tuple(s) # 输出:('a', 's', 'd', 'f', 'a', 's', 'd', 'f', '0')
 6 # print(v)
 7 
 8 # v = tuple(li) #输出:('asdf', 'asdfasdf')
 9 # print(v)
10 
11 # v = list(tu) #输出:['asdf', 'asdf']
12 # print(v)
13 
14 # v = "_".join(tu) #输出:asdf_asdf
15 # v = "".join(tu) #输出:asdfasdf
16 # print(v)

(6)、扩展与追加

1 li = ["asdf","asdfasdf"]
2 # li.extend((11,22,33,)) # ['asdf', 'asdfasdf', 11, 22, 33]
3 li.append((11.22,33)) # ['asdf', 'asdfasdf', (11.22, 33)]
4 print(li)

(7)、元组中的一级元素不可被修改、删除、增加

1 tu = (111,"alex",(11,22),[(33,44)],True,33,44,)
2 # # 元组,有序。
3 # v = tu[3][0][0] # 输出:33
4 # print(v)
5 v=tu[3]
6 print(v)   #输出[(33, 44)]
7 tu[3][0] = 567   #输出(111, 'alex', (11, 22), [567], True, 33, 44)
8 print(tu)
View Code

 

六、字典:dict

1、书写格式:

键值对;逗号分;使用{}进行括起;键与值用‘“:”进行对应

1 info = {
2     "k1":"v1",
3     "k2":"v2"
4 }
5 print(info)  #输出:{'k1': 'v1', 'k2': 'v2'}

2、字典中的value值可以是任意数据类型

 1 info = {
 2     "k1": 18,
 3     "k2": True,
 4     "k3": [
 5         11,
 6         [],
 7         (),
 8         22,
 9         33,
10         {
11             'kk1': 'vv1',
12             'kk2': 'vv2',
13             'kk3': (11,22),
14         }
15     ],
16     "k4": (11,22,33,44)
17 }
18 print(info)
View Code

3、字典中的key不能是列表、字典

 1 info ={
 2 
 3     "k1": 'asdf',
 4     True: "123",
 5     # [11,22]: 123, #输出:unhashable type: 'list'
 6     # (11,22): 123, 输出:unhashable type: 'dict'
 7     {'k1':'v1'}: 123
 8 
 9 }
10 print(info)
View Code

4、字典是无序的

打印同一字典,字典里的元素顺序是变化的

5、可以通过索引方式找到指定元素

 1 info = {
 2     "k1": 18,
 3     2: True,
 4     "k3": [
 5         11,
 6         [],
 7         (),
 8         22,
 9         33,
10         {
11             'kk1': 'vv1',
12             'kk2': 'vv2',
13             'kk3': (11,22),
14         }
15     ],
16     "k4": (11,22,33,44)
17 }
18 # v = info['k1']  #输出:18,将key值为"k1"的value找到
19 # print(v)
20 # v = info[2]  #输出:True,同上
21 # print(v)
22 v = info['k3'][5]['kk3'][0]  #输出:11;
23 print(v)
View Code

6、字典支持删除:del info[key]

 1 info = {
 2     "k1": 18,
 3     2: True,
 4     "k3": [
 5         11,
 6         [],
 7         (),
 8         22,
 9         33,
10         {
11             'kk1': 'vv1',
12             'kk2': 'vv2',
13             'kk3': (11,22),
14         }
15     ],
16     "k4": (11,22,33,44)
17 }
18 # del info['k1']
19 
20 del info['k3'][5]['kk1']
21 print(info)
View Code

7、for循环

 1 info = {
 2     "k1": 18,
 3     2: True,
 4     "k3": [
 5         11,
 6         [],
 7         (),
 8         22,
 9         33,
10         {
11             'kk1': 'vv1',
12             'kk2': 'vv2',
13             'kk3': (11,22),
14         }
15     ],
16     "k4": (11,22,33,44)
17 }
18 # for item in info:
19 #     print(item)
20 """输出结果:将key值循环打印
21 k1
22 2
23 k3
24 k4
25 
26 """
27 
28 # for item in info.keys():
29 #     print(item)
30 """输出结果:将key值循环打印
31 k1
32 2
33 k3
34 k4
35 
36 """
37 # for item in info.values():
38 #     print(item)
39 """输出结果:将value值循环打印
40 18
41 True
42 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
43 (11, 22, 33, 44)
44 """
45 # for item in info.keys():
46 #     print(item,info[item])
47 """输出结果:将key:value值成对打印出
48 k1 18
49 2 True
50 k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
51 k4 (11, 22, 33, 44)
52 """
53 
54 # for k,v in info.items():
55 #     print(k,v)
56 """输出结果:将key:value值成对打印出
57 k1 18
58 2 True
59 k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
60 k4 (11, 22, 33, 44)
61 """
62 # True 1  False 0
63 # info ={
64 #     "k1": 'asdf',
65 #     True: "123",
66 #     # [11,22]: 123
67 #     (11,22): 123,
68 #     # {'k1':' v1'}: 123
69 #
70 # }
71 # print(info)
View Code

 

七、布尔值:bool

布尔值比较简单,就不在罗列

 

八、数据类型整理

 1 # 一、数字
 2 # int(..)
 3 # 二、字符串
 4 # replace/find/join/strip/startswith/split/upper/lower/format
 5 # tempalte = "i am {name}, age : {age}"
 6 # # v = tempalte.format(name='alex',age=19)
 7 # v = tempalte.format(**{"name": 'alex','age': 19})
 8 # print(v)
 9 # 三、列表
10 # append、extend、insert
11 # 索引、切片、循环
12 # 四、元组
13 # 忽略
14 # 索引、切片、循环         以及元素不能被修改
15 # 五、字典
16 # get/update/keys/values/items
17 # for,索引
18 
19 # dic = {
20 #     "k1": 'v1'
21 # }
22 
23 # v = "k1" in dic
24 # print(v)
25 
26 # v = "v1" in dic.values()
27 # print(v)
28 # 六、布尔值
29 # 0 1
30 # bool(...)
31 # None ""  () []  {} 0 ==> False
View Code

 

posted @ 2018-05-20 18:17  小菜鸡1枚  阅读(383)  评论(0编辑  收藏  举报