一、进制简介

进制也就是进位制,是人们规定的一种进位方法。对于任何一种进制---X进制,就表示某一位置上的数运算时是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

1.位和字节

位(bit)表示二进制位。位是计算机内部数据储存的最小单位,11010100是一个8位二进制数。

字节(byte)习惯上用大写的“B”表示。字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特(1Byte=8bit)。

八位二进制数最小为00000000,最大为11111111;通常1个字节可以存入一个ASCII码,2个字节可以存放一个汉字国标码。

  1. (1) bit:位
  2. 一个二进制数据01,是1bit
  3. (2) byte:字节
  4. 1 byte = 8 bit
  5. (3) 一个英文字符占一个字节;
  6. 1 字母 = 1 byte = 8 bit
  7. (4) 一个汉字占2个字节;
  8. 1 汉字 = 2 byte = 16 bit

GBK:一个汉字占用两个字节,GB18030编码向下兼容GBK和GB2312。

UTF-8:一个汉字占用3个字节

每种编码都有自己的码表,因此编码规则是不一样的。

2.二进制

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”。

数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。

二进制就是等于2时就要进位。

0=00000000

1=00000001

2=00000010

3=00000011

4=00000100

5=00000101

6=00000110

7=00000111

8=00001000

9=00001001

10=00001010

3.十进制

十进制基于位进制和十进位两条原则,即所有的数字都用10个基本的符号表示,满十进一,同时同一个符号在不同位置上所表示的数值不同,符号的位置非常重要。基本符号是0到9十个数字。

0 1 2 3 4 5 6 7 8 9

4.十六进制

十六进制是计算机中数据的一种表示方法。同我们日常生活中的表示法不一样。它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15。

0 1 2 3 4 5 6 7 8 9 A B C D E F

5.各进制对照表

二、字符串str

1.类和对象

在python中,一个对象的特征也称为属性(attribute)。它所具有的行为也称为方法(method)

结论:对象=属性+方法

在python中,把具有相同属性和方法的对象归为一个类(class)。

类是对象的抽象化,对象是类的实例化。类不代表具体的事物,而对象表示具体的事物。

类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个包括在特定类型的对象中的方法和变量的模板。

打个比方:

智能手机就是一个类(class),它是某类对象的统称,而你手上的这部iPhone7就是从属于智能手机这个类的一个具体实例/对象(object)。智能手机都会有个电池容量的参数(智能手机这个类的域或类变量),智能手机的电池容量除以充电功率可得充满电需要的时长(这一行为称为智能手机这个类的方法)具体到你的这部iPhone7也有它对应的电池容量(对象的域或实例变量),相应的:这部iPhone7的电池容量除以它的充电器功率也就得到它充满电需要的时间(对象可调用从属的那个类的方法)再具体到张三的那部sumsung S7,同样可以调用智能手机这个类的域和方法,得到那部S7的目标值。

2.字符串首字母大写,其他变成小写

string.capitalize()

自身不变,会生成一个新的值

  1. name = 'toNg'
  2. v = name.capitalize() # 自动找到name关联的str类,执行其中的capitalize技能
  3. print(name)
  4. print(v)
  1. 运行结果:
  2. toNg
  3. Tong
3.将所有大小写都变小写

string.casefold()

  1. name = 'ToNg'
  2. v = name.casefold()
  3. print(name)
  4. print(v)
  1. 运行结果:
  2. ToNg
  3. tong

string.lower()

效果与上面的一样。

只不过:

python 3.3引入了string.casefold方法,对Unicode(其他语言:德语...)的时候用casefold,lower() 只对 ASCII 也就是 'A-Z'有效,但是其它一些语言里面存在小写的情况就没办法了。

例如:德语中

  1. s = 'ß'
  2. a = s.lower() # 'ß'
  3. b = s.casefold() # 'ss'
  4. print(a)
  5. print(b)
  1. 运行结果:
  2. ß
  3. ss
4.文本格式化

(1)文本居中

string.center(width, fillchar=None)

参数1: 表示总长度

参数2:空白处填充的字符(长度为1)

  1. name = 'tong'
  2. v = name.center(20)
  3. print(v)
  4. v = name.center(20,'行')
  5. print(v)
  1. 运行结果:
  2. tong
  3. 行行行行行行行行tong行行行行行行行行

(2)文本左对齐并填充右边部分(长度包含前面的值)

string.ljust(width, fillchar=None)

  1. name = 'tong'
  2. v = name.ljust(20)
  3. print(v)
  4. v = name.ljust(20,'*')
  5. print(v)
  1. 运行结果:
  2. tong
  3. tong****************

(3)文本右对齐并填充左边部分(长度包含后面的值)

string.rjust(width, fillchar=None)

  1. name = 'tong'
  2. v = name.rjust(20)
  3. print(v)
  4. v = name.rjust(20,'*')
  5. print(v)
  1. 运行结果:
  2. tong
  3. ****************tong
5.表示传入值在字符串中出现的次数

string.count(sub, start=None, end=None)

参数1: 要查找的值(子序列)

参数2: 起始位置(索引)

参数3: 结束位置(索引)

  1. name = "alexasdfdsafsdfasdfaaaaaaaa"
  2. v = name.count('a')
  3. print(v)
  4. v = name.count('df',0,15)
  5. print(v)
  1. 运行结果:
  2. 12
  3. 2
6.是否以xx开头或结尾

string.startswith(prefix, start=None, end=None)

string.endswith(suffix, start=None, end=None)

参数1:需要检查的字符串

参数2:设置字符串检测的起始位置

参数3:设置字符串检测的结束位置

  1. name = 'tong'
  2. v1 = name.startswith('to')
  3. print(v1)
  4. v2 = name.endswith('g')
  5. print(v2)
  6. v3 = name.startswith('c')
  7. print(v3)
  1. 运行结果:
  2. True
  3. True
  4. False
7.指定的编码格式编码字符串

string.encode(encoding='UTF-8',errors='strict')

参数1:要使用的编码,如"UTF-8、GBK"

参数2:设置不同错误的处理方案。默认为 'strict',意为编码错误引起一个UnicodeError。 其他可能的值有'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace'以及通过codecs.register_error() 注册的任何值。

  1. name = '晓达'
  2. v = name.encode(encoding='utf-8',errors='strict')
  3. print(v)
  4. a = name.encode(encoding='gbk',errors='strict')
  5. print(a)
  1. 运行结果:
  2. b'\xe6\x99\x93\xe8\xbe\xbe'
  3. b'\xcf\xfe\xb4\xef'
8.找到制表符\t,进行替换(长度包含前面的值)

string.expendtabs(tabsize=8)

  1. name = "al\te\tx\nalex\tuu\tkkk"
  2. v = name.expandtabs(20)
  3. print(v)
  1. 运行结果:
  2. al e x
  3. alex uu kkk
9.找到指定子序列的索引位置:不存在返回-1

string.find(sub, start=None, end=None)

存在返回索引位置,不存在返回-1

string.index(sub, start=None, end=None)

存在返回索引位置,不存在报错

  1. name = 'alex'
  2. v = name.find('o')
  3. print(v)
  4. a = name.find('e')
  5. print(a)
  6. b = name.index('e')
  7. print(b)
  8. c = name.index('t')
  9. print(c)
  1. 运行结果:
  2. -1
  3. 2
  4. 2
  5. Traceback (most recent call last):
  6. File "E:/s17/day02/test.py", line 10, in <module>
  7. c = name.index('t')
  8. ValueError: substring not found
10.字符串格式化

string.format(*args, **kwargs)

string.format_map(mapping)

  1. 根据索引位置
  2. tpl = "我是:{0};年龄:{1};性别:{2}"
  3. v = tpl.format("李杰",19,'都行')
  4. print(v)
  5. 根据变量名
  6. tpl = "我是:{name};年龄:{age};性别:{gender}"
  7. v = tpl.format(name='李杰',age=19,gender='随意')
  8. print(v)
  9. 根据KV映射关系
  10. tpl = "我是:{name};年龄:{age};性别:{gender}"
  11. v = tpl.format_map({'name':"李杰",'age':19,'gender':'中'})
  12. print(v)
  1. 运行结果:
  2. 我是:李杰;年龄:19;性别:都行
  3. 我是:李杰;年龄:19;性别:随意
  4. 我是:李杰;年龄:19;性别:中
11.检测函数

(1)检测字符串是否由字母和数字、汉字组成

string.isalnum()

如果string至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False

  1. name = 'alex8汉子'
  2. v = name.isalnum()
  3. name1 = 'alex8..*汉子'
  4. v1 = name1.isalnum()
  5. print(v1)
  1. 运行结果:
  2. True
  3. False

(2)检测字符串是否只由字母组成

string.isalpha()

如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False

  1. name = 'alex'
  2. name1 = 'alex8..*汉子'
  3. v1 = name.isalpha()
  4. print(v1)
  5. v2 = name1.isalpha()
  6. print(v2)
  1. 运行结果:
  2. True
  3. False

(3)判断是否是数字

string.isdecimal()

string.isdigit()

string.isnumeric()

  1. num = '②'
  2. v1 = num.isdecimal() # '123' 只能识别阿拉伯数字
  3. v2 = num.isdigit() # '123','②' 可识别特殊数字格式
  4. v3 = num.isnumeric() # '123','二','②' 可识别汉字,及特殊数字格式
  5. print(v1,v2,v3)
  1. 运行结果:
  2. False True True

(4)判断字符串是否是合法的标识符,字符串仅包含中文字符合法,实际上这里判断的是变量名是否合法

string.isidentifier()

  1. n = 'name'
  2. v = n.isidentifier()
  3. print(v)
  4. n = '仝晓达'
  5. v = n.isidentifier()
  6. print(v)
  7. n = '9xiaoda'
  8. v = n.isidentifier()
  9. print(v)
  1. 运行结果:
  2. True
  3. True
  4. False

(5)是否全部是大写或小写

string.isupper()

string.islower()

  1. name = "ALEX"
  2. v = name.isupper()
  3. print(v)
  4. name1 = "tong"
  5. v1 = name1.islower()
  6. print(v1)
  1. 运行结果:
  2. True
  3. True

(6)判断字符串中所有字符是否是可见状态

string.isprintable()

  1. name = "钓鱼要钓刀鱼,\n刀鱼要到岛上钓"
  2. v = name.isprintable()
  3. print(v)
  1. 运行结果:
  2. False

(7)字符串中如果至少有一个字符,并且全部为空格时返回为True

string.isspace()

  1. name = 'tong '
  2. v = name.isspace()
  3. print(v)
  4. name1 = ' '
  5. v1 = name1.isspace()
  6. print(v1)
  1. 运行结果:
  2. False
  3. True
12.全部变大写

string.upper()

  1. name = 'alex'
  2. v = name.upper()
  3. print(v)
  1. 运行结果:
  2. ALEX
13.将序列中的元素以指定的字符连接生成一个新的字符串

string.join(iterable)

返回通过指定字符连接序列中元素后生成的新字符串

  1. name = 'alex'
  2. v = "_".join(name) # 内部循环每个元素
  3. print(v)
  4. name_list = ['海峰','杠娘','李杰','李泉']
  5. v = "搞".join(name_list)
  6. print(v)
  1. 运行结果:
  2. a_l_e_x
  3. 海峰搞杠娘搞李杰搞李泉
14.对应关系 + 翻译

string.maketrans(*args, **kwargs)

用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。

string.translate(table)

根据参数table给出的表(包含256个字符)转换字符串的字符

  1. m = str.maketrans('aeiou','12345') # 对应关系
  2. print(m)
  3. name = "akpsojfasdufasdlkfj8ausdfakjsdfl;kjer09asdf"
  4. v = name.translate(m) # 翻译
  5. print(v)
  1. 运行结果:
  2. {97: 49, 111: 52, 117: 53, 101: 50, 105: 51}
  3. 1kps4jf1sd5f1sdlkfj815sdf1kjsdfl;kj2r091sdf
15.分割元素

string.partition(sep)

根据指定字符串来分割原字符串,并将指定字符串添加进原字符串内

string.split(sep=None, maxsplit=-1)

指定分隔符对字符串进行切片,可指定分割次数

  1. content = "李泉SB刘康SB刘一"
  2. v = content.partition('SB') # partition
  3. print(v)
  4. v1 = content.split('SB')
  5. print(v1)
  6. v2 = content.split('SB',1)
  7. print(v2)
  1. 运行结果:
  2. ('李泉', 'SB', '刘康SB刘一')
  3. ['李泉', '刘康', '刘一']
  4. ['李泉', '刘康SB刘一']
16.替换字符串

string.replace(old, new, count=None)

  1. content = "李泉SB刘康SB刘浩SB刘一"
  2. v = content.replace('SB','Love')
  3. print(v)
  4. v = content.replace('SB','Love',1)
  5. print(v)
  1. 运行结果:
  2. 李泉Love刘康Love刘浩Love刘一
  3. 李泉Love刘康SB刘浩SB刘一
17.移除空白,\n,\t,自定义去掉指定字符串

string.strip(chars=None)

  1. name = ' alex\t'
  2. v = name.strip() # 空白,\n,\t
  3. print(v)
  4. name1 = ' alex tong eric'
  5. v1 = name1.strip('eric') # 自定义
  6. print(v1)
  1. 运行结果:
  2. alex
  3. alex tong
18.大小写转换

string.swapcase()

  1. name = "Alex"
  2. v = name.swapcase()
  3. print(v)
  1. 运行结果:
  2. aLEX
19.填充0

string.zfill(width)

  1. name = "alex"
  2. v = name.zfill(20)
  3. print(v)
  1. 运行结果:
  2. 0000000000000000alex
20.标题格式化

string.title()

string.istitle()

判断是否为标题

返回字符串内所有首字母均变为大写

  1. v = "this is string example....wow!!!"
  2. a = v.title()
  3. print(a)
  1. 运行结果:
  2. This Is String Example....Wow!!!

三、整数int

1.当前整数的二进制表示,最少位数

int.bit_length()

  1. age = 4 # 100
  2. print(age.bit_length())
  1. 运行结果:
  2. 3
2. 获取当前数据的字节表示

int.to_bytes(length, byteorder, *args, **kwargs)

  1. age = 15
  2. v = age.to_bytes(10,byteorder='big')
  3. v1 = age.to_bytes(10,byteorder='little')
  4. print(v)
  5. print(v1)
  1. 运行结果:
  2. b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f'
  3. b'\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00'

四、布尔值bool

v = 0

v = ""

v = []

以上均为:False 其他情况为:True

五、列表list

1.追加
  1. user_list = ['李泉','刘一','刘康','豆豆','小龙']
  2. user_list.append('刘铭')
  3. print(user_list)
  1. 运行结果:
  2. ['李泉', '刘一', '刘康', '豆豆', '小龙', '刘铭']
2. 清空
  1. user_list = ['李泉','刘一','刘康','豆豆','小龙']
  2. user_list.clear()
  3. print(user_list)
  1. 运行结果:
  2. []
3. 拷贝(浅拷贝)
  1. user_list = ['李泉','刘一','刘康','豆豆','小龙']
  2. v = user_list.copy()
  3. print(v)
  4. print(user_list)
  1. 运行结果:
  2. ['李泉', '刘一', '刘康', '豆豆', '小龙']
  3. ['李泉', '刘一', '刘康', '豆豆', '小龙']
4. 计数
  1. user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙']
  2. v = user_list.count('李泉')
  3. print(v)
  1. 运行结果:
  2. 2
5. 扩展原列表
  1. user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙']
  2. user_list.extend(['郭少龙','郭少霞'])
  3. print(user_list)
  1. 运行结果:
  2. ['李泉', '刘一', '李泉', '刘康', '豆豆', '小龙', '郭少龙', '郭少霞']
6. 查找元素索引,没有则报错
  1. user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙']
  2. v = user_list.index('李海')
  3. print(v)
  1. 运行结果:
  2. Traceback (most recent call last):
  3. File "E:/s17/day02/test.py", line 4, in <module>
  4. v = user_list.index('李海')
  5. ValueError: '李海' is not in list
7. 删除并且获取元素 - 索引
  1. user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙']
  2. v = user_list.pop(1)
  3. print(v)
  4. print(user_list)
  1. 运行结果:
  2. 刘一
  3. ['李泉', '李泉', '刘康', '豆豆', '小龙']
8. 删除 - 值
  1. user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙']
  2. user_list.remove('刘一')
  3. print(user_list)
  1. 运行结果:
  2. ['李泉', '李泉', '刘康', '豆豆', '小龙']
9. 翻转
  1. user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙']
  2. user_list.reverse()
  3. print(user_list)
  1. 运行结果:
  2. ['小龙', '豆豆', '刘康', '李泉', '刘一', '李泉']
10. 排序: 欠参数
  1. nums = [11,22,3,3,9,88]
  2. print(nums)
  3. # 排序,从小到大
  4. nums.sort()
  5. print(nums)
  6. # 从大到小
  7. nums.sort(reverse=True)
  8. print(nums)
  1. 运行结果:
  2. [11, 22, 3, 3, 9, 88]
  3. [3, 3, 9, 11, 22, 88]
  4. [88, 22, 11, 9, 3, 3]

六、range和enumrate生成序列方式

1. 请输出1-10

2.7: 立即生成所有数字

range(1,11) # 生成 1,2,3,4,5,6,...10

3.x: 不会立即生成,只有循环迭代时,才一个一个生成

  1. for i in range(1,11):
  2. print(i)
  3. for i in range(1,11,2):
  4. print(i)
  5. for i in range(10,0,-1):
  6. print(i)
2. range: 三个参数
  1. li = ['eric','alex','tony']
  2. range,len,li循环
  3. for i in range(0,len(li)):
  4. ele = li[i]
  5. print(ele)
  6. li = ['eric','alex','tony']
  7. for j in range(0,len(li)):
  8. print(j+1,li[j])
  1. 运行结果:
  2. eric
  3. alex
  4. tony
  5. 1 eric
  6. 2 alex
  7. 3 tony
3.enumerate额外生成一列有序的数字
  1. li = ['eric','alex','tony']
  2. for i,ele in enumerate(li,1):
  3. print(i,ele)
  4. v = input('请输入商品序号:')
  5. v = int(v)
  6. item = li[v-1]
  7. print(item)
  1. 运行结果:
  2. 1 eric
  3. 2 alex
  4. 3 tony
  5. 请输入商品序号:2
  6. alex

七、元组tuple

1.元组定义
  1. user_tuple = ('alex','eric','seven','alex')

元组是不可被修改的列表;不可变类型

2. 获取个数
  1. user_tuple = ('alex','eric','seven','alex')
  2. v = user_tuple.count('alex')
  3. print(v)
  1. 运行结果:
  2. 2
3.获取值的第一个索引位置
  1. user_tuple = ('alex','eric','seven','alex')
  2. v = user_tuple.index('alex')
  3. print(v)
  1. 运行结果:
  2. 0
4.额外的元组功能:
  1. user_tuple = ('alex','eric','seven','alex')
  2. for i in user_tuple: # 可以for循环
  3. print(i)
  4. v = user_tuple[0] # 可以被索引
  5. v = user_tuple[0:2] # 可以切片
  6. print(v)
  1. 运行结果:
  2. alex
  3. eric
  4. seven
  5. alex
  6. ('alex', 'eric')
  1. user_tuple = ('alex','eric','seven',['陈涛','刘浩','赵芬芬'],'alex')
  2. user_tuple[3][1] = '刘一' # 元组不可变,但构成元组的可变元素是可变的
  3. print(user_tuple)
  4. li = ['陈涛','刘浩',('alex','eric','seven'),'赵芬芬']
  5. ****** 元组最后,加逗号,否则只有一个元素时将变成字符串 ******
  6. li = ('alex',)
  7. print(li)
  1. 运行结果:
  2. ('alex', 'eric', 'seven', ['陈涛', '刘一', '赵芬芬'], 'alex')
  3. ('alex',)

八、字典dict

1. 清空
  1. dic = {'k1':'v1','k2':'v2'}
  2. dic.clear()
  3. print(dic)
  1. 运行结果:
  2. {}
2. 浅拷贝
  1. dic = {'k1':'v1','k2':'v2'}
  2. v = dic.copy()
  3. print(v)
  1. 运行结果:
  2. {'k1': 'v1', 'k2': 'v2'}
3. 根据key获取指定的value;不存在则赋予新值,不报错
  1. dic = {'k1':'v1','k2':'v2'}
  2. v = dic.get('k1111',1111)
  3. print(v)
  1. 运行结果:
  2. 1111
4. 删除并获取对应的value值
  1. dic = {'k1':'v1','k2':'v2'}
  2. v = dic.pop('k1')
  3. print(dic)
  4. print(v)
  1. 运行结果:
5. 随机删除键值对,并获取到删除的键值
  1. dic = {'k1':'v1','k2':'v2'}
  2. v = dic.popitem()
  3. print(dic)
  4. print(v)
  1. 运行结果:
  2. {'k2': 'v2'}
  3. v1
  1. dic = {'k1':'v1','k2':'v2'}
  2. k,v = dic.popitem() # ('k2', 'v2')
  3. print(dic)
  4. print(k,v)
  1. 运行结果:
  2. {'k2': 'v2'}
  3. k1 v1
  1. dic = {'k1':'v1','k2':'v2'}
  2. v = dic.popitem() # ('k2', 'v2')
  3. print(dic)
  4. print(v[0],v[1])
  1. 运行结果:
  2. {'k1': 'v1'}
  3. k2 v2
6. 增加,如果存在则不做操作
  1. dic = {'k1':'v1','k2':'v2'}
  2. dic.setdefault('k3','v3')
  3. print(dic)
  4. dic = {'k1':'v1','k2':'v2'}
  5. dic.setdefault('k1','1111111')
  6. print(dic)
  1. 运行结果:
  2. {'k1': 'v1', 'k3': 'v3', 'k2': 'v2'}
  3. {'k1': 'v1', 'k2': 'v2'}
7. 批量增加或修改
  1. dic = {'k1':'v1','k2':'v2'}
  2. dic.update({'k3':'v3','k1':'v24'})
  3. print(dic)
  1. 运行结果:
  2. {'k3': 'v3', 'k2': 'v2', 'k1': 'v24'}
  1. dic = dict.fromkeys(['k1','k2','k3'],123)
  2. print(dic)
  3. dic = dict.fromkeys(['k1','k2','k3'],123)
  4. dic['k1'] = 'asdfjasldkf'
  5. print(dic)
  1. 运行结果:
  2. {'k2': 123, 'k1': 123, 'k3': 123}
  3. {'k2': 123, 'k1': 'asdfjasldkf', 'k3': 123}
  1. dic = dict.fromkeys(['k1','k2','k3'],[1,])
  2. dic['k1'].append(222)
  3. print(dic)
  1. 运行结果:
  2. {'k2': [1, 222], 'k3': [1, 222], 'k1': [1, 222]}
8.额外的字典功能:
  • 字典可以嵌套
  • 字典key: 必须是不可变类型
  1. dic = {
  2. 'k1': 'v1',
  3. 'k2': [1,2,3,],
  4. (1,2): 'lllll',
  5. 1: 'fffffffff',
  6. 111: 'asdf',
  7. }
  8. print(dic)
  9. key:
  10. - 不可变
  11. - True,1
  12. dic = {'k1':'v1'}
  13. del dic['k1']
  14. 布尔值:
  15. 1 True
  16. 0 False
  17. bool(1111)

九、集合set

1.集合的定义
  1. s1 = {"alex",'eric','tony','李泉','李泉11'}
  2. s2 = {"alex",'eric','tony','刘一'}

不可重复的列表;可变类型

2.s1中存在,s2中不存在
  1. s1 = {"alex",'eric','tony','李泉','李泉11'}
  2. s2 = {"alex",'eric','tony','刘一'}
  3. v = s1.difference(s2)
  4. print(v)
  1. 运行结果:
  2. {'李泉11', '李泉'}

s1中存在,s2中不存在,然后对s1清空,然后在重新复制

  1. s1 = {"alex",'eric','tony','李泉','李泉11'}
  2. s2 = {"alex",'eric','tony','刘一'}
  3. s1.difference_update(s2)
  4. print(s1)
  5. print(s2)
  1. 运行结果:
  2. {'李泉11', '李泉'}
  3. {'tony', 'alex', '刘一', 'eric'}
3.s2中存在,s1中不存在,s1中存在,s2中不存在
  1. s1 = {"alex",'eric','tony','李泉','李泉11'}
  2. s2 = {"alex",'eric','tony','刘一'}
  3. v = s1.symmetric_difference(s2)
  4. print(v)
  1. 运行结果:
  2. {'李泉', '刘一', '李泉11'}
4. 交集
  1. s1 = {"alex",'eric','tony','李泉','李泉11'}
  2. s2 = {"alex",'eric','tony','刘一'}
  3. v = s1.intersection(s2)
  4. print(v)
  1. 运行结果:
  2. {'eric', 'tony', 'alex'}
5. 并集
  1. s1 = {"alex",'eric','tony','李泉','李泉11'}
  2. s2 = {"alex",'eric','tony','刘一'}
  3. v = s1.union(s2)
  4. print(v)
  1. 运行结果:
  2. {'李泉', 'alex', 'tony', 'eric', '李泉11', '刘一'}
6. 移除
  1. s1 = {"alex",'eric','tony','李泉','李泉11'}
  2. s1.discard('alex')
  3. print(s1)
  1. 运行结果:
  2. {'李泉', 'eric', 'tony', '李泉11'}
7.更新,值存在则不更新
  1. s1 = {"alex",'eric','tony','李泉','李泉11'}
  2. s1.update({'alex','123123','fff'})
  3. print(s1)
  1. 运行结果:
  2. {'eric', 'alex', '123123', '李泉11', '李泉', 'tony', 'fff'}
8.额外的集合功能:
  1. s1 = {"alex",'eric','tony','李泉','李泉11'}
  2. for i in s1: # 可以使用for循环
  3. print(i)
  4. s1 = {"alex",'eric','tony','李泉','李泉11',(11,22,33)}
  5. for i in s1: # 可以嵌套元组,不能嵌套列表
  6. print(i)

Python编程-数据类型方法的更多相关文章

  1. Python编程-绑定方法、软件开发

    一.绑定方法与非绑定方法 1.绑定方法 绑定给谁,谁来调用就自动将它本身当作第一个参数传入 (1)绑定到类的方法:用classmethod装饰器装饰的方法. 为类量身定制 类.boud_method( ...

  2. Python基础数据类型方法补充

    str 补充的方法: capitalize():首字母大写,其余变小写 s = 'liBAI' s1 = s.capitalize() print(s1) # Libai swapcase():大小写 ...

  3. Python编程从入门到实践笔记——变量和简单数据类型

    Python编程从入门到实践笔记——变量和简单数据类型 #coding=gbk #变量 message_1 = 'aAa fff' message_2 = 'hart' message_3 = &qu ...

  4. Python编程笔记二进制、字符编码、数据类型

    Python编程笔记二进制.字符编码.数据类型 一.二进制 bin() 在python中可以用bin()内置函数获取一个十进制的数的二进制 计算机容量单位 8bit = 1 bytes 字节,最小的存 ...

  5. Python编程-常用模块及方法

    常用模块介绍 一.time模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行 ...

  6. Python 编程入门(1):基本数据类型

    以下所有例子都基于最新版本的 Python,为了便于消化,每一篇都尽量短小精悍,希望你能尽力去掌握 Python 编程的「概念」,可以的话去动手试一下这些例子(就算目前还没完全搞懂),加深理解. 程序 ...

  7. 第2章 Python编程基础知识 第2.1节 简单的Python数据类型、变量赋值及输入输出

    第三节 简单的Python数据类型.变量赋值及输入输出 Python是一门解释性语言,它的执行依赖于Python提供的执行环境,前面一章介绍了Python环境安装.WINDOWS系列Python编辑和 ...

  8. python常用数据类型内置方法介绍

    熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 下面介绍了python常用的集中数据类型及其方法,点开源代码,其中对主要方法都进行了中文注释. 一.整型 a = 100 a.xx ...

  9. python——获取数据类型:type()、isinstance()的使用方法:

    python——获取数据类型   在python中,可使用type()和isinstance()内置函数获取数据类型 如: (1)type()的使用方法: >>> a = '230' ...

随机推荐

  1. Photoshop脚本之jpg转换成eps

    function saveEPS( doc, saveFile ) { var saveOptions = new EPSSaveOptions( ); saveOptions.encoding = ...

  2. LeetCode递归 -2(Recursion) 培训专题 讲解文章翻译 (附链接) (2019-04-09 15:50)

    递归 - 空间复杂度  在本文中, 我们将讨论如何分析递归算法的空间复杂度. 在计算递归算法的空间复杂度时,最需要考虑的两个部分就是: 递归相关空间 (recursion related space) ...

  3. Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色

    通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术.Velocity.Tiles.iText和POI.Spring MVC 框架 ...

  4. OpenCV学习笔记二:OpenCV模块一览

    注:本系列博客基于OpenCV 2.9.0.0 一,一览图: 二,模块: /* 基础库 */ 1,opencv_core(链接) ,opencv最基础的库.包含exception,point,rect ...

  5. rest-framework框架的基本组件分析

    一.快速实例化 二.序列化 三.视图 四.身份认证,权限认证,频率限制 五.分页 六.响应器 七.路由 八.解释器

  6. 如何导入和导出应用数据通过电子邮件应用程序在你的IOS

     本文转载至 http://blog.csdn.net/zaitianaoxiang/article/details/6657887 http://yueding920.blog.163.com/bl ...

  7. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)3.4——Flavor Dimensions

    问题: 一个product flavor不够,你需要另一个标准去区分不同版本的app 解决方案: 在product flavor中增加flavorDimensions 讨论: 在3.2章展示了一个有三 ...

  8. hoj 2739 中国邮局问题

    /*若原图的基图不连通, 或者存在某个点的入度或出度为 0 则无解. 统计所有点的入度出度之差 Di, 对于 Di > 0 的点, 加边(s, i, Di, 0); 对于 Di < 0 的 ...

  9. Win7 maven安装及配置

    1. 前期准备 ① jdk 1.8 ② maven 3.5.4 下载地址:http://maven.apache.org/download.cgi 2. 配置maven环境变量 ① maven解压到指 ...

  10. LIS(模板)

    记录一下,O(nlgn)的算法求LIS //HHH #include <iostream> #include <stdio.h> #include <string.h&g ...