Day04
一、int,str,bool三种基本类型的转换:
int ------str: 转换方法直接是str()就行
代码演示:
1 a = 909090 2 a1 = str(a) 3 print(a1) 4 print(type(a1))
运行结果:
D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py 909090 <class 'str'>
str -------int: 转换方法直接是int()就行
代码演示:
1 a = '我来自湖北省武汉市黄陂区' 2 b = '10000' 3 a1 = int(a) 4 #b1 = int(b) 5 print(a1) 6 #print(b1)
运行结果:
1 Traceback (most recent call last): 2 File "D:/学习资料/项目/练习/lianxi.py", line 3, in <module> 3 a1 = int(a) 4 ValueError: invalid literal for int() with base 10: '我来自湖北省武汉市黄陂区'
报错的原因在于,文字字符串不能转换成为数字,因为代码解释会有一定的问题。
只有数字字符串才能转换成为数字
代码演示:
1 a = '我来自湖北省武汉市黄陂区' 2 b = '10000' 3 #a1 = int(a) 4 b1 = int(b) 5 #print(a1) 6 print(b1)
运行结果:
D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py 10000 进程已结束,退出代码0
直接很成功的就转换成为了数字。
str ----------bool:也是直接bool()就行
代码演示:
1 a = '' 2 a1 = ' ' 3 a2 = '我来自湖北省武汉市黄陂区罗汉寺街道' 4 b = bool(a) 5 b1 = bool(a1) 6 b2 = bool(a2) 7 print(b) 8 print(b1) 9 print(b2)
运行结果:
1 D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py 2 False 3 True 4 True 5 6 进程已结束,退出代码0
通过上述实验得知,在python中 str 类型转换成 bool 类型只要是空字符串就是False,只要字符串中有内容,哪怕是空格,bool返回的也是Ture.所以也还是比较简单的。
int --------bool:
代码演示:
1 a = 1 2 a1 = 0 3 a2 = -1 4 a3 = 1.1 5 b = bool(a) 6 b1 = bool(a1) 7 b2 = bool(a2) 8 b3 = bool(a3) 9 print(b) 10 print(b1) 11 print(b2) 12 print(b3)
运行结果:
D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py
True
False
True
True
进程已结束,退出代码0
与字符串转换成 bool类型类似,int 类型转换成 bool除了0以外的数全部都是TURE,无论是整数,复数,还是小数。只有0转换成 bool是false
bool ----------int:
代码演示:
1 a = True 2 a1 = False 3 b = int(a) 4 b1 = int(a1) 5 print(b) 6 print(b1)
运行结果:
1 D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py 2 1 3 0 4 5 进程已结束,退出代码0
bool类型的 ture,false 分别对应 int 里面的 1和0
二、列表的操作方法:
列表是python中特有的存在一般用 [a1,a2,a3] 中括号括起来进行表示列表
列表的操作方法
增加:
(append),增加到末尾:
代码演示:
1 #增加 append 2 ''' 3 def append(self, *args, **kwargs): # real signature unknown 4 """ Append object to the end of the list. """ 5 '''
6 li = [1,2,3,'胡澳'] 7 li.append(56) 8 print(li)
运行结果:
1 D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py 2 [1, 2, 3, '胡澳', 56] 3 4 进程已结束,退出代码0
append和它方法的解释一样,只能添加在列表的最后面。并不能够随心所欲的增加数据
(insert)按照索引进行增加:
代码演示:
1 #增加 append 2 ''' 3 def insert(self, *args, **kwargs): # real signature unknown 4 """ Insert object before index. """ 5 pass 6 ''' 7 li = [1,2,3,'胡澳'] 8 li.insert(1,'huao') 9 print(li)
运行结果:
1 D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py 2 [1, 'huao', 2, 3, '胡澳'] 3 4 进程已结束,退出代码0
insert 是可以根据索引进行插入的,可以想在那个地方插入数据就在那个地方插入数据
extend增加的是迭代对象里面的元素
代码演示01:
1 #增加 append 2 ''' 3 def extend(self, *args, **kwargs): # real signature unknown 4 """ Extend list by appending elements from the iterable. """ 5 pass 6 ''' 7 li = [1,2,3,'胡澳'] 8 li.extend('青柠辄酒') 9 #li.extend(123) 10 print(li)
运行结果01:
1 D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py 2 [1, 2, 3, '胡澳', '青', '柠', '辄', '酒'] 3 4 进程已结束,退出代码0
代码演示02:
1 #增加 append 2 ''' 3 def extend(self, *args, **kwargs): # real signature unknown 4 """ Extend list by appending elements from the iterable. """ 5 pass 6 ''' 7 li = [1,2,3,'胡澳'] 8 #li.extend('青柠辄酒') 9 li.extend(123) 10 print(li)
运行结果02:
D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py Traceback (most recent call last): File "D:/学习资料/项目/练习/lianxi.py", line 9, in <module> li.extend(123) TypeError: 'int' object is not iterable 进程已结束,退出代码1
由两次的结果进行比对发现:在添加123时报错了。根据对 extend方法的解释发现,列表添加的是 iterable(可迭代对象) ,并将可迭代对象中的元素依次添加进入列表中。
在这里补充一下什么是可迭代对象:
一般简单的理解就是可以用 for 循环的对象就是迭代对象 ,常见的可迭代对象有(字符串,字典,列表,元组,生成器等)
先来理解一下迭代的意思:
迭代指的就是:每一次对过程的重复成为一次迭代,每一次迭代的结果成为下一次迭代的初始值。
所以迭代对象就是能够进行迭代的对象。
删除:
pop按照索引进行删除,有返回值,返回的是被删除的元素:
代码演示:
1 #删除:
def pop(self, *args, **kwargs): # real signature unknown
"""
Remove and return item at index (default last).
Raises IndexError if list is empty or index is out of range.
"""
pass
2 li = [1,2,3,4,7,8,'胡澳'] 3 l1 = li.pop(2) 4 l2 = li.pop() 5 #l3 = li.pop(12) 6 print(l1,li) 7 print(l2) 8 #print(l3)
运行结果:
D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py 3 [1, 2, 4, 7, 8] 胡澳 进程已结束,退出代码0
分析:
代码第三行 l1 接受的是删除返回的元素 3
代码第四行 l2 中没有索引的时候,直接默认删除列表最后一个
超过索引的时候会直接报错。
remove 按照值进行删除,无返回值:
代码演示:
1 #删除: 2 ''' 3 def remove(self, *args, **kwargs): # real signature unknown 4 """ 5 Remove first occurrence of value. 6 7 Raises ValueError if the value is not present. 8 """ 9 pass 10 ''' 11 li = [1,2,3,4,7,8,'胡澳'] 12 li.remove(4)
运行结果:
D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py [1, 2, 3, 7, 8, '胡澳'] 进程已结束,退出代码0
分析:remove没有返回值,删除的直接是值。如果在列表中没有找到被删除的值,则会直接报错。
clear 一次性全部清空:
代码演示:
1 #删除: 2 ''' 3 def clear(self, *args, **kwargs): # real signature unknown 4 """ Remove all items from list. """ 5 pass 6 ''' 7 li = [1,2,3,4,7,8,'胡澳'] 8 li.clear() 9 print(li)
运行结果:
D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py
[]
进程已结束,退出代码0
del 切片进行删除:
代码演示:
1 li = [1,2,3,4,'胡澳'] 2 del li[0:3] 3 print(li)
运行结果:
D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py [4, '胡澳'] 进程已结束,退出代码0
切片的方法和字符串切片的方法一样。
改:
代码演示:
1 li = [1,2,3,4,'胡澳'] 2 li[0] = '湖北省武汉市' 3 li[0:3] = ['二哥','贤语哥',12,5,6,23,6,78] 4 print(li)
运行结果:
D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py ['二哥', '贤语哥', 12, 5, 6, 23, 6, 78, 4, '胡澳'] 进程已结束,退出代码0
分析:修改列表中的元素,单个修改如第二行所示直接进行替换就行。
也可以使用切片进行修改如第3行所示:切片进行修改的特点就是只要指定了区间,无论后面列表里面跟着有多少的元素都能够塞进去。就像3行,选取了前面[0:3]的位置,只有三个元素的位置,但是还是把它所有的元素都给塞进去了。
查:
代码演示:
1 li = [1,2,3,4,'胡澳'] 2 for i in li: 3 print(i,end=' ') 4 print() 5 print(li[0:3])
运行结果:
1 D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py 2 1 2 3 4 胡澳 3 [1, 2, 3] 4 5 进程已结束,退出代码0
分析:列表查看的方法一般就两种,使用for循环进行循环打印,使用切片进行输出。
常见的公共方法(len,index,count):
代码演示:
1 ''' 2 # 判断迭代对象的长度 3 def len(*args, **kwargs): # real signature unknown 4 """ Return the number of items in a container. """ 5 pass 6 # 返回容器中的项数 7 ''' 8 9 li = [1,2,3,4,'胡澳','胡澳',4,4,4] 10 a = len(li) 11 print(a) 12 13 ''' 14 def count(self, *args, **kwargs): # real signature unknown 15 """ Return number of occurrences of value. """ 16 pass 17 一般是用来返回值出现的次数 18 ''' 19 b = li.count(4) 20 print(b) 21 22 ''' 23 def index(self, *args, **kwargs): # real signature unknown 24 """ 25 Return first index of value. 26 27 Raises ValueError if the value is not present. 28 """ 29 pass
30 #一般是返回第一个值得索引,是什么意思呢!比如列表中可能有很多个4,但是返回得索引值是第一个4得索引值 31 ''' 32 print(li.index(4))
运行结果:
1 D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py 2 9 3 4 4 3 5 6 进程已结束,退出代码0
排序:
代码演示:
1 li = [1,4,5,6,3,2,7] 2 3 #正序排序 4 #li.sort() 5 #print(li) 6 7 #反序排序 8 #li.sort(reverse=True) 9 #print(li) 10 11 #反转 12 li.reverse() 13 print(li)
运行结果:
1 D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py 2 [7, 2, 3, 6, 5, 4, 1] 3 4 进程已结束,退出代码0
分析:sort()中的 reverse(颠倒) 是默认的False 所以是正序进行排序。当时Ture的时候,就进行逆序排序。 调用reverse()函数的时候,是将列表进行反转,将最后面的元素放回最前面去。所以注意反转和反序排序不是同一个事情。
列表的嵌套:
代码演示:
1 li = [[1,2,3,4],'hua','aa胡澳',['江湖混子','青柠辄酒']] 2 #将江湖混子替换成胡澳 3 li[3][0] = li[3][0].replace('江湖混子','胡澳') 4 #print(li) 5 6 #将hua中的首大写 7 li[1] = li[1].capitalize() 8 #print(li) 9 10 #删除[1,2,3,4]中的3,4 11 li[0].remove(3) 12 print(li)
运行结果:
D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py [[1, 2, 4], 'Hua', 'aa胡澳', ['胡澳', '青柠辄酒']] 进程已结束,退出代码0
分析:列表的嵌套就是列表里面的元素是列表,也就是列表里面嵌套着列表。例如 1行的 li 列表就是。列表里面的元素取出来后可以按照原来的方式进行操作,如果是列表就按照列表的方式进行操作,如果是字符串就可以按照字符串的方式进行操作。取出来之后就完全独立于原来的列表了。
元组:
元组在python中不同于列表,字典,字符串等可以进行修改的迭代对象,元组只能进行读取,不能进行修改。它可以进行循环查询,可以像列表一样进行切片。
但是元组虽然不能够进行修改,但是元组里面的部分元素却可以进行修改。例如([1,2,3],'胡澳','湖北省武汉市') 里面的列表和字符串却可以进行修改。
代码演示:
1 tu = ['胡澳', 3, 4, [1, 2, 3, 4], "湖北省武汉市黄陂区"] 2 #循环查询: 3 for i in tu : 4 print(i) 5 6 print("="*20) 7 8 #切片输出: 9 print(tu[0:3]) 10 11 print("="*20) 12 13 #对元素进行修改,例如在列表后面添加20 14 tu[3].append('20') 15 print(tu)
运行结果:
D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py 胡澳 3 4 [1, 2, 3, 4] 湖北省武汉市黄陂区 ==================== ['胡澳', 3, 4] ==================== ['胡澳', 3, 4, [1, 2, 3, 4, '20'], '湖北省武汉市黄陂区'] 进程已结束,退出代码0
list ----------str的转换:
list类型转换成为str的时候使用 join 就能行。这是最基本的。
join 的基本用法
join方法的描述 连接任意数量的字符串,方法被调用的字符串被插入到每个给定字符串之间 ,结果作为新字符串返回。
代码演示:
1 ''' 2 def join(self, ab=None, pq=None, rs=None): # real signature unknown; restored from __doc__ 3 """ 4 Concatenate any number of strings. 5 6 The string whose method is called is inserted in between each given string. 7 The result is returned as a new string. 8 9 Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs' 10 """ 11 pass 12 13 ''' 14 s2 = "湖北省武汉市黄陂区" 15 s1 = ' '.join(s2) 16 print(s1)
运行结果:
D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py
湖 北 省 武 汉 市 黄 陂 区
湖 北 省
list 类型转换成为 str
代码演示:
1 li = ['湖','北','省'] 2 l1 = ' '.join(li) 3 print(l1) 4 print(type(l1)) 5 print(type(li))
运行结果:
湖 北 省 <class 'str'> <class 'list'>
可以看到的就是,li 的类型已经发生了变化,由原来的 list 类型转换成为了 str 类型
str ------- list 的转化(split):
代码演示:
1 st = '湖 北 省武 汉市黄陂区' 2 s1 = st.split(" ") 3 print(s1) 4 print(type(st)) 5 print(type(s1))
运行结果:
D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py ['湖', '北', '省武', '汉市黄陂区'] <class 'str'> <class 'list'>
直接使用 split 进行切片就行。能偶将 str 类型转换成为 list 类型
range 详解:
range 函数是用来专门给迭代对象进行迭代的函数。
具体用法如下:
代码演示:
#标准正序输出步长 for i in range(0,10): print(i,end = ' ') print() #输出奇数,将步长转换成为2就行 for i in range(1,10,2): print(i,end = ' ') print() #倒叙输出 for i in range(10,0,-1): print(i,end = ' ') print() for i in range(10): print(i,end=' ') print() for i in range(10,-1,-2): print(i, end=' ') print()
运行结果:
D:\常用软件\Python3.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py 0 1 2 3 4 5 6 7 8 9 1 3 5 7 9 10 9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 10 8 6 4 2 0 进程已结束,退出代码0
上面的程序演示了 range 函数的正序,倒叙,有步长,无步长等等一些列的操作。其实,这些操作和字符串的切片基本上是一样的使用方法。
yunxing
本文来自博客园,作者:江湖混子,转载请注明原文链接:https://www.cnblogs.com/huao990928/p/11620014.html