- (1)不带括号:调用的是这个函数本身 ,是整个函数体,是一个函数对象,不需等该函数执行完成。
- (2)带括号(参数或者无参):调用的是函数的执行结果,须等该函数执行完成的结果。
def fuc_temp(x):
print("come here")
return x
print(fuc_temp)
# 不带括号调用的结果:
print(fuc_temp(10))
# 带括号调用的结果:come here
# 带括号调用的结果:10
数据类型:数值类型、字符串类型
(1)数值类型:整型、浮点型、复数、布尔、空值
整型(int)
:也称整数,是正或负整数,不带小数点。浮点型(float)
:由整数加小数组成,带小数点,可以使用科学记数法计数:3.14E2 = 3.14*10^2^ = 314
。复数(complex)
:由实部和虚部构成,可以用a + bj 或 complex(a. b)
表示。布尔类型(bool)
:两个值:True和False。整型的一种。True==1,False==0
。空值(None)
: 不支持任何运算,也没有任何内置函数方法。(2)字符串类型(str):python中最常见的数据类型,使用(单 / 双)引号来创建字符串。Python只有字符串没有字符,字符是字符串的一种。
数据结构:列表list、元祖tuple、字典dict、集合set
(数据结构是计算机存储数据的方式)
不可变:即变量的值定义后不可再次修改,但可以通过拼接等操作符改变。
- 不可变数据类型:
布尔类型(bool)、整型(int)、字符串(str)、元组(tuple)
- 可变数据类型:
列表(list)、集合(set)、字典(dict)
序列(sequence):即可以存放多个值的连续内存空间。
- 序列是python中最基本的数据结构。
- 序列中每个元素都分配到一个数字,即它的位置或索引,默认从0开始。
- 一般来说,有序序列类型都支持索引,切片,相加,相乘,成员操作,确定序列长度、确定最大最小元素等。。
❤️ 有序序列:
- 字符串(有序不可变序列)
- 元组(有序不可变序列)
- 列表(有序可变序列):
- range类型
list(range(10))
- map类型
list(map(int, [23.2, 33.1]))
❤️ 无序序列:
- 字典(无序可变序列)
- 集合(无序可变序列)
(1)可迭代对象不是迭代器。
(2)函数iter()
将可迭代对象转为迭代器。
迭代器的对象通过调用 函数next()
并不断返回下一个数据,当迭代器耗尽,且未指定默认值时,将提示 StopIteration 异常。
# 使用内置函数isinstance 判断,例如判断列表是否可迭代
from collections import Iterable, Iterator
print(isinstance([], Iterable)) # True
print(isinstance([], Iterator)) # False。因为list还没有被转为迭代器,仅是可迭代对象
python之迭代器和生成器全解
可迭代对象(iterable):
list、tuple、dict、set、str
- 可迭代对象是指存储了元素的一个容器对象,且容器中的元素可以通过 __ iter __ ( )方法迭代或 __ getitem __ ( )方法访问。
- (1)__ iter __ ( )方法:可迭代对象。让对象可以用
for … in obj
遍历元素。- (2)__ getitem __ ( )方法:可访问对象。让对象可以用
[index]
访问元素。- 可迭代对象是不能独立进行迭代。凡是可迭代对象都可以通过for循环访问。
- 访问过程分两个步骤:一是调用 __ iter __ ( )获得一个可迭代器,二是循环调用 __ next __ ( ) 获得元素。
"""1、只实现__getitem__"""
class A:
def __init__(self):
self.data=[1,2,3]
def __getitem__(self,index):
return self.data[index]
a=A()
for i in a:
print(i) # 输出: 1、2、3
####################################
"""2、实现__getitem__和__iter__"""
class A:
def __init__(self):
self.data=[1,2,3]
self.data1=[4,5,6]
def __iter__(self):
return iter(self.data1)
def __getitem__(self,index):
return self.data[index]
a=A()
for i in a:
print(i) # 输出: 4、5、6
"""
(1)如果只实现__getitem__,for in 循环体会自动调用__getitem__函数;
并自动从Index=0开始自增,并将对应索引位置的值赋值给 i,直到引发IndexError错误。
(2)如果实现__getitem__和__iter__,则会忽略__getitem__,只调用__iter__;
并对__iter__返回的迭代器进行成员遍历,并自动将遍历的成员逐次赋值给 i,直到引发StopIteration。
"""
迭代器(iterator):迭代器就是可以通过 next() 不断返回下一个值的对象,其本质是一个实现了支持__ iter __ ( )、__ next __ ( )或next()方法的对象。
- (0)所以,如果想创建一个迭代器,则需要定义一个类(自定义),并在该类中实现__iter__和__next__魔法函数。
- (1) __ next __ ( )方法或内置函数 next( ):可调用对象。逐个返回数据流中的元素。
- (2)但我们不能提前知道序列的长度,只有在需要返回下一个数据时它才会计算。
- (3)当迭代器耗尽,且未指定默认值时,将提示 StopIteration 异常。
class My_iter:
# 初始化实例变量值,便于在__next__中使用
def __init__(self):
self.a=1
# 该函数必须返回一个迭代器
def __iter__(self):
return self
# 该值返回每次next调用,需要返回的下一个值。即实现数值推演算法
def __next__(self):
self.a += 1
return self.a
it = My_iter() # 实例化迭代器
print(next(it))
print(next(it))
生成器(yield):生成器就是用关键字 yield 来返回值,函数被调用时会返回一个生成器对象。
- 生成器本质上还是一个迭代器。
生成器用关键字 yield 返回值,而普通函数用 return 返回值。
- 唯一的区别:实现方式不一样,yield更加简洁,没有冗长代码。
yield与return对比
相同点:
- (1)均在函数体内使用,并且向调用方返回结果
- (2)均可返回一个值或多个值,如果是多个值,则是以元组格式返回
不同点:
- (1)yield函数调用时,最终返回的是一个生成器。—— return函数调用时,最终返回的是一个值。
- (2)yield执行并返回值后,不会退出函数体,而是挂起,待下次next()调用时,再从挂起点恢复运行。—— return 执行并返回值后,便会直接退出函数体,且释放函数的内存空间。
- (4)yield语句可以接受通过生成器 send 方法传入的参数并赋值给一个变量,以动态调整生成器的行为表现。
- (5)yield语句的返回值,可以通过关键词 from 指定 返回源。
return在生成器中的作用:
在一个生成器函数中,如果没有 return,则默认执行至函数完毕;
如果在执行过程中 return,则直接抛出 StopIteration 终止迭代。
def generator(a, b):
yield a+b
g = generator(1, 2) # 实例化生成器
print(next(g, 00)) # 调用生成器:3
print(generator) # 函数对象:
print(g) # 生成器对象:
yield与return对比(代码演示)
# 1、yield和return共存
def gene1(maxcount):
a, b = 0, 1
count = 1
while True:
if count > maxcount:
# 直接退出函数体
return
else:
# 返回值后,函数在该处挂起,下次再从该处恢复运行
yield a+b
a, b = b, a+b
count += 1
############################################################
# 2、yield接受通过send传入的参数并动态调整生成器行为
def gene2(maxcount):
a, b = 0, 1
count = 1
while True:
if count>maxcount:
return
else:
msg = yield a+b
if msg == 'stop':
return
a, b = b, a+b
count += 1
g = gene2(10)
next(g)
g.send('msg') # 生成器终止,并抛出一个StopIteration异常
############################################################
# 3、通过from关键词,接受另外一个生成器,并通过该生成器返回值
ge = (i for i in range(10))
def gene3(gene):
yield from gene
g = gene3(ge)
Python3 常见运算符(算术运算符、关系运算符、逻辑运算符、位运算符、成员运算符、身份运算符
序列 | 运算符 | 名称 | 说明 | 举例 | 结果 | 数据类型 |
---|---|---|---|---|---|---|
【1】 | + | 加 | (1)对于数字:求和。 | c = 1 + 2 |
c = 3 | int型 |
【1】 | + | 加 | (2)对于序列类型(如:字符串):拼接操作 | str = 'a' + 'b' |
str = 'ab' |
字符串型 |
2 | - | 减 | 求差值 | c = 1 - 2 |
c = -1 | int型 |
【3】 | * | 乘 | (1)对于数字:求积。 | c = 2 * 3 |
c = 6 | int型 |
【3】 | * | 乘 | (2)对于序列类型(如:字符串):重复操作 | str = 'a' * 3 |
str = 'aaa' |
字符串型 |
4 | / | 除 | 求商(两个整数或浮点数相除,结果为float型) | c = 3 / 2 |
c = 1.5 | 浮点型 |
5 | % | 取余 | 求余数 | c = 3 % 2 |
c = 1 | int型 |
6 | ** | 幂 | 求次幂 | c = 3 ** 2 |
c = 9 | int型 |
【7】 | // | 地板除法 | 向下取整。(1)两个整数相除,结果为int型 | c = 3 // 2 |
c = 1 | int型 |
【7】 | // | 地板除法 | 向下取整。(2)除数或被除数为float类型,则结果为float类型。 | c = 3 // 2.0 |
c = 1.0 | 浮点型 |
Python3 内置函数(大全)
一般来说,有序序列类型都支持索引,切片,相加,相乘,成员操作。
- 不可变数据类型:
布尔类型(bool)、整型(int)、字符串(str)、元组(tuple)
- 可变数据类型:
列表(list)、集合(set)、字典(dict)
序号 | 函数 | 说明 |
---|---|---|
0 | list1 = [] |
创建空列表 |
0 | list1 = list() |
创建空列表 |
1 | list2 = [元素] |
创建列表。输入参数可以是任意类型 |
1 | list2 = list(元素) |
创建列表。输入参数可以是任意类型 |
—— | —— | —— |
2 | list[index] |
索引(负数表示倒叙) |
3 | list[start, end] |
切片(获取指定范围元素) |
4 | list[::-1] |
逆序输出(步长为1) |
—— | —— | —— |
5 | list.append(元素) |
在列表末尾添加任意类型的一个元素 |
6 | list.extend(元素) |
添加可迭代序列 |
7 | list.insert(index, 元素) |
在指定位置插入一个元素 |
—— | —— | —— |
8 | list.remove(元素) |
删除指定元素。(1)若有多个相同元素,则只删除第一个元素。(2) 若不存在,则系统报错。 |
9 | list.pop(index) |
删除指定位置元素。默认删除最后一项。 |
10 | del list(index) |
删除指定位置元素 |
11 | list.clear() |
清空内容,返回空列表 |
—— | —— | —— |
12 | list.index(元素) |
索引元素位置。(1)若有多个相同元素,则只返回第一个元素的位置。(2)若不存在,则系统报错。 |
13 | list.count(元素) |
计算指定元素出现的次数 |
14 | list.reverse() |
逆序输出 |
15 | list.sort(*, key=None, reverse=False) |
(1)默认从小到大排列。(2)reverse=True 表示从大到小排序。 |
—— | —— | —— |
(1) | len(list) |
元素个数 |
(2) | type(list) |
查看数据类型 |
(3) | max(list) |
返回最大值(不能有嵌套序列) |
(4) | min(list) |
返回最小值(不能有嵌套序列) |
(5) | list(tuple) |
将元组转换为列表 |
(6) | list1 + list2 |
+ 操作符(拼接) |
(7) | list * 3 |
* 操作符(重复) |
(8) | 元素 in list |
(in / not in)成员操作符(判断给定值是否在序列中) |
(9) | for i in list: |
遍历 |
(1)Python 的元组与列表类似,不同之处在于元组的元素不能修改(不可变)。所谓元组不可变是指元组所指向的内存中的内容不可变。
(2)元组使用小括号 ( ),列表使用方括号 [ ]。
(3)一般来说,有序序列类型都支持索引,切片,相加,相乘,成员操作。
(4)元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用。 如:整型:tup1 = (50)
、元组:tup1 = (50,)
- 不可变数据类型:
布尔类型(bool)、整型(int)、字符串(str)、元组(tuple)
- 可变数据类型:
列表(list)、集合(set)、字典(dict)
序号 | 函数 | 说明 |
---|---|---|
0 | tuple1 = () |
创建空元组 |
0 | tuple1 = tuple() |
创建空元组 |
1 | tuple2 = (元素) |
创建列表。输入参数可以是任意类型 |
—— | —— | —— |
2 | tuple[index] |
索引(负数表示倒叙) |
3 | tuple[start, end] |
切片(获取指定范围元素) |
4 | tuple[::-1] |
逆序输出(步长为1) |
—— | —— | —— |
5 | del tuple |
删除整个元组,不可以指定元素。删除后若打印变量,则系统报错(未定义)。 |
—— | —— | —— |
6 | tuple.index(元素) |
索引元素位置。(1)若有多个相同元素,则只返回第一个元素的位置。(2)若不存在,则系统报错。 |
7 | tuple.count(元素) |
计算指定元素出现的次数 |
—— | —— | —— |
(1) | len(tuple) |
元素个数 |
(2) | type(tuple) |
查看数据类型 |
(3) | max(tuple) |
返回最大值(不能有嵌套序列) |
(4) | min(tuple) |
返回最小值(不能有嵌套序列) |
(5) | list(iterable) |
将可迭代系列转换为元组。 |
(6) | tuple1 + tuple2 |
+ 操作符(拼接) |
(7) | tuple * 3 |
* 操作符(重复) |
(8) | 元素 in tuple |
(in / not in)成员操作符(判断给定值是否在序列中) |
(9) | for i in tuple: |
遍历 |
无序:赋值后,各元素位置将随机输出。
不重复:赋值变量时,若存在重复元素,系统会自动去除,只保留一个。
set(str)
对字符串去重set(tuple)
对元组去重set(list)
对列表去重。
备注:字符串、元祖、列表是有序序列。
备注:无法对无序序列进行去重。
序号 | 函数 | 说明 |
---|---|---|
0 | set1 = set() |
创建空集合 |
1 | set2 = {元素1, 元素2} |
创建集合 |
1 | set2 = set({元素1, 元素2}) |
创建集合。输入参数可以是任意类型 |
—— | —— | —— |
2 | set.add(元素) |
(只能添加一个元素)将元素添加到集合中。若元素存在,则不进行任何操作。 |
3 | set.update(元素) |
(添加多个元素)将元素添加到集合中。(1)参数可以是列表,元组,字典等。(2)若是字符串,将按字符拆分后再添加。 |
4 | set.copy() |
浅拷贝 |
—— | —— | —— |
4 | set.remove(元素) |
删除指定元素。若元素不存在,则系统报错。 |
5 | set.discard(元素) |
删除指定元素。若元素不存在,则不进行任何操作。 |
6 | set.pop() |
随机删除一个元素。(1)对集合进行无序排列,然后删除第一个元素。(2)若指定元素,则系统报错。 |
7 | set.clear() |
清空内容,返回空集合 |
—— | —— | —— |
(1) | len(set) |
元素个数 |
(2) | type(set) |
查看数据类型 |
(3) | 元素 in set |
(in / not in)成员操作符(判断给定值是否在序列中) |
(4) | for i in set: |
遍历 |
(2)键必须是唯一的(不可变数据类型),但值可以取任意数据类型。
(3)不支持索引、切片、重复和连接操作。
- 不可变数据类型:
布尔类型(bool)、整型(int)、字符串(str)、元组(tuple)
- 可变数据类型:
列表(list)、集合(set)、字典(dict)
序号 | 函数 | 说明 |
---|---|---|
0 | dict1 = {} |
创建空字典 |
0 | dict1 = dict() |
创建空字典 |
1 | dict2 = {key1: value1, key2: value2} |
创建字典 |
1 | dict2 = dict({key: value, key2: value2}) |
创建字典 |
—— | —— | —— |
2 | dict.keys() |
查看字典中所有的key值 |
3 | dict.values() |
查看字典中所有的value值 |
4 | dict.items() |
查看字典中所有的key-value值 |
5 | dict(key) |
获取指定key对应的value值。若key值不存在,程序会报错。 |
6 | dict.get(key, default=None) |
获取指定key对应的value值。若key不存在,返回设置的default。 |
7 | dict.copy() |
浅拷贝 |
—— | —— | —— |
8 | dict(key) = value |
若key存在,更新value值。若不存在,新增key-value值。 |
9 | dict1.update(dict2) |
添加元素(可同时添加多对)。若key存在,则更新value值。 |
10 | dict.setdefault(key, default=None) |
若key存在,既不新增也不更新value值。若key不存在,将会添加键,并将value值设为default。 |
—— | —— | —— |
11 | dict.pop(key) |
弹出指定的key-value值 |
12 | dict.popitem() |
删除最后一个key-value |
13 | dict.clear() |
清空字典内容,返回空字典 |
14 | del dict[key] |
删除指定的key-value值。 |
—— | —— | —— |
(1) | len(dict) |
列表元素个数 |
(2) | type(dict) |
查看数据类型 |
(3) | 'key1' in dict or 'key1' in dict.keys |
判断给定值是否在字典的key中(默认:dict.keys()) |
(4) | 'value1' in dict.values() |
判断给定值是否在字典的value中 |
(5) | 'dict.has_key('name') |
判断字典中是否有指定的key元素 |
(5) | for i in dict: |
遍历字典的key值(默认:dict.keys()) |
- 在C/C++中,通常采用
指针+结构体
来实现链表;而在Python中,则采用引用+类
来实现链表。- 常用的数据结构:数组、链表(一对一)、栈和队列、哈希表、树(一对多)、图(多对多)。列表与链表的对比
链表(Linked List)是一种线性表数据结构,使用一组任意的存储单元(不是进行连续存储的。),来存储一组具有相同类型的数据。
链表:
由多个元素组成,每个元素都是一个对象,每个对象称为一个节点。
每个节点包含两个部分:左边存储着自定义数据(数据域),右边存储着下一个节点的链接地址(指针域)。
- 通过各个节点之间的相互连接,最终串联成一个链表。
链表的常见操作
链表的常见操作 | 说明 |
---|---|
is_empty() | 链表是否为空 |
length() | 链表长度 |
travel() | 遍历整个链表 |
add(item) | 链表头部添加元素 |
append(item) | 链表尾部添加元素 |
insert(pos, item) | 指定位置添加元素 |
remove(item) | 删除节点 |
search(item) | 查找节点是否存在 |
算法实现步骤+图解 |
具体代码:
class Node(object):
"""单链表的节点类,即 ListNode 类。定义了两个实例变量"""
def __init__(self, elem):
self.elem = elem
self.next = None
class SingleLinkList(object):
"""单链表的链表类,即 LinkedList 类。定义了常用操作"""
def __init__(self, node=None):
self.__head = node
def is_empty(self):
"""判断链表是否为空"""
return self.__head is None
def length(self):
"""链表长度"""
cursor = self.__head
count = 0
while cursor is not None:
count += 1
cursor = cursor.next
return count
def travel(self):
"""遍历链表"""
cursor = self.__head
while cursor is not None:
print(cursor.elem, end=' ')
cursor = cursor.next
def add(self, elem):
"""链表头部添加元素"""
node = Node(elem)
node.next = self.__head
self.__head = node
def append(self, elem):
"""链表尾部添加元素"""
node = Node(elem)
if self.is_empty():
self.__head = node
else:
cursor = self.__head
while cursor.next is not None:
cursor = cursor.next
cursor.next = node
def insert(self, pos, elem):
"""在指定位置插入元素"""
node = Node(elem)
if pos <= 0:
self.add(elem)
elif pos > (self.length() - 1):
self.append(elem)
else:
cursor = self.__head
count = 0
while count < pos - 1:
count += 1
cursor = cursor.next
node.next = cursor.next
cursor.next = node
def remove(self, elem):
"""删除元素"""
cursor = self.__head
pre = None
while cursor is not None:
if cursor.elem == elem:
if cursor == self.__head:
self.__head = cursor.next
break
else:
pre.next = cursor.next
break
else:
pre = cursor
cursor = cursor.next
def search(self, elem):
"""查找元素"""
cursor = self.__head
while cursor is not None:
if cursor.elem == elem:
return True
else:
cursor = cursor.next
else:
return False
if __name__ == "__main__":
link1 = SingleLinkList()
print(link1.is_empty())
print(link1.length())
link1.append(1)
link1.append(2)
link1.add(6)
link1.insert(1, 7)
link1.insert(-1, 8)
link1.travel()
print()
print(link1.travel())
link1.remove(9)
link1.travel()
print()
print(link1.travel())
"""
True
0
8 6 7 1 2
8 6 7 1 2 None
8 6 7 1 2
8 6 7 1 2 None
"""
import math
- 向上取整:
math.ceil(5.1) == 6
- 向下取整:
int(5.6) == 5
、math.floor(5.6) == 5
- 四舍五入:
round(5.6) == 6
True == 1、False == 0
。函数说明:
int(x, base=10)
输入参数:
x
:字符串或数字(整数、浮点数)。base
:默认十进制
。
备注1:若带参数base,表示将 (二进制、十进制、十六进制)的 x 转换为十进制。
备注2:若带参数base,则输入必须是整数,且整数必须以字符串的形式进行输入。
输入 | 返回值 | 举例 | 输出 |
---|---|---|---|
int('整数', base=16) |
输入整数指定为16进制,转换为10进制整数(同理:其余进制) | print(int('20', 16)) 和 print(int('0XAA', 16)) |
32 和 170 |
(1)输入为空或数字 | \ | \ | \ |
int() |
\ | print(int()) |
0 |
int(浮点数) |
\ | print(int(-2.1)) |
-2 |
(2)输入为字符串 | \ | \ | \ |
int(字符串(整数)) |
\ | print(int('-2')) |
-2 |
int(字符串(浮点数)) |
需先将str转换为float,再转换为int,否则报错。 | print(int(float('-2.1'))) |
-2 |
十进制转换为16进制
十六进制范围:
0 ~ 65536(0000 ~ FFFF)
方法:
- (1)十进制数除16
(取余数1)
,得商1- (2)商1除16
(取余数2)
,得商2- (3)商2除16
(取余数3)
,得商3- (4)最后商3等于0
(取余数4)
。- 最终结果为倒序余数
= [余数4, 余数3, 余数2, 余数1]
。举例(整数:65036):
(1)65036 除 16,商4064,余数 12(十六进制C)
(2)4064 除 16,商254,余数 0(十六进制0)
(3)254 除 16,商15,余数 14(十六进制E)
(4)15除16,商0,余数 15(十六进制F)。
(5)结束:得16进制为 = FE0C
十进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
16进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
2进制 | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
函数说明:
bin(整型)
print(bin(-3))
print(type(bin(-3)))
'''
-0b11
'''
函数说明:
ord(字符)
print(ord('A'))
print(type(ord('A')))
'''
65
'''
函数说明:
chr(number)
print(chr(97))
print(type(chr(97)))
'''
a
'''
函数说明:
float(object)
输入参数:
object
:整数、字符串、布尔值(若没有输入参数,则float=0.0
)
备注1:当非十进制的字符串作为参数时,若超出数字字符时会报错。比如:float('2a1')
备注2:不能进行不同进制之间的转换,否则系统报错。与int()完全不同。
print('空输入参数', float())
print('整数转换为浮点数', float(5))
print('浮点数转换为浮点数', float(-5.5))
print('字符串转换为浮点数', float('-5.5'))
print('布尔值转换为浮点数', float(True))
'''
空输入参数 0.0
整数转换为浮点数 5.0
浮点数转换为浮点数 -5.5
字符串转换为浮点数 -5.5
布尔值转换为浮点数 1.0
'''
复数由实数和虚数构成,其实部a和虚部b都是浮点型。返回值是复数类型。
函数说明:a + bj
或complex(a,b)
函数说明:
str(x, base=10)
一般来说,有序序列类型都支持索引,切片,相加,相乘,成员操作。
print('返回空字符串:', str())
print('整数转换为字符串:', str(-23))
print('浮点数转换为字符串:', str(1.3e2))
print('返回空字符串:', type(str()))
print('整数转换为字符串:', type(str(-23)))
print('浮点数转换为字符串:', type(str(1.3e2)))
print('列表转换为字符串:', str([12, '-23.1', 'Python']))
print('元组转换为字符串:', str((23, '9we', -8.5)))
print('字典转换为字符串:', str({'Huawei': 'China', 'Apple': 'USA'}))
print('集合转换为字符串:', str({'China', 'Japan', 'UK'}))
'''
返回空字符串:
整数转换为字符串: -23
浮点数转换为字符串: 130.0
返回空字符串:
整数转换为字符串:
浮点数转换为字符串:
列表转换为字符串: [12, '-23.1', 'Python']
元组转换为字符串: (23, '9we', -8.5)
字典转换为字符串: {'Huawei': 'China', 'Apple': 'USA'}
集合转换为字符串: {'China', 'UK', 'Japan'}
'''
函数说明:
'Separator'.join(Sequence)
功能说明:以Separator为分隔符,对Sequence所有元素进行逐个分割,并返回一个新的字符串。
输入参数:
Separator
:代表分隔符。 可以是单个字符(如:''、','、'.'、'-'、'*'
等),也可以是字符串(如:'abc'
)。Sequence
:代表要连接的元素序列。可以是字符串、元组、列表、字典。
备注1:Separator
和Sequence
都只能是string型,不能是int型和float型,否则系统报错。
备注2:字典的读取是随机的。
a1 = 'I Love China !'
print('字符串: ', ' '.join(a1))
a11 = 'I Love China !'
print('字符串: ', ''.join(a11))
a2 = ['I', 'Love', 'China', '!']
print('列表: ', ' '.join(a2))
a3 = ('I', 'Love', 'China', '!')
print('元祖: ', ' '.join(a3))
a4 = {'I': 1, 'Love': 2, 'China': 3, '!': 4}
print('字典: ', ' '.join(a4))
'''
字符串: I L o v e C h i n a !
字符串: I Love China !
列表: I Love China !
元祖: I Love China !
字典: I Love China !
'''
import os # 导入路径模块
os.getcwd() # 获取当前路径
data_save = os.path.join(os.getcwd(), 'data_save') # 获取当前路径并组合新的路径
print(data_save)
函数说明:
str.split(str=".", num=string.count(str))[n]
参数说明:
- str: 表示分隔符,默认为空格,但是不能为空。若字符串中没有分隔符,则把整个字符串作为列表的一个元素。
- num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量。
- [n]: 表示选取第n个切片。
- 注意:当使用空格作为分隔符时,对于中间为空的项会自动忽略。
s = 'www.dod.com.cn'
print('分隔符(默认): ', s.split()) # 【输出结果】分隔符(默认): ['www.dod.com.cn']
print('分隔符(.): ', s.split('.')) # 【输出结果】分隔符(.): ['www', 'dod', 'com', 'cn']
print('分割1次, 分隔符(.): ', s.split('.', 1)) # 【输出结果】分割1次, 分隔符(.): ['www', 'dod.com.cn']
print('分割2次, 分隔符(.): ', s.split('.', 2)) # 【输出结果】分割2次, 分隔符(.): ['www', 'dod', 'com.cn']
print('分割2次, 分隔符(.), 取出分割后下标为1的字符串: ', s.split('.', 2)[1]) # 【输出结果】分割2次, 分隔符(.), 取出分割后下标为1的字符串: dod
print(s.split('.', -1)) # 【输出结果】['www', 'dod', 'com', 'cn']
###########################################
# 分割2次, 并分别保存到三个变量
s1, s2, s3 = s.split('.', 2)
print('s1:', s1) # 【输出结果】s1: www
print('s2:', s1) # 【输出结果】s2: www
print('s3:', s2) # 【输出结果】s3: dod
###########################################
# 连续多次分割
a = 'Hello<[www.dodo.com.cn]>Bye'
print(a.split('[')) # 【输出结果】['Hello<', 'www.dodo.com.cn]>Bye']
print(a.split('[')[1].split(']')[0]) # 【输出结果】www.dodo.com.cn
print(a.split('[')[1].split(']')[0].split('.')) # 【输出结果】['www', 'dodo', 'com', 'cn']
函数说明:
str.count("char", start, end)
或str.count("char")
参数说明:
- str:为要统计的字符(可以是单字符,也可以是多字符)。
- start:为索引字符串的起始位置,默认参数为0。
- end:为索引字符串的结束位置,默认参数为字符串长度即len(str)。
str_temp = "i love python, i am learning python"
print(str_temp.count("i")) # 【输出结果】3 # 单字符统计:start和end为默认参数
print(str_temp.count("i", 2)) # 【输出结果】2 # 单字符统计:star=2,end值为默认参数
print(str_temp.count("i", 0, 5)) # 【输出结果】1 # 单字符统计:star=2,end=5
################################################################################################
print(str_temp.count("py")) # 【输出结果】2 # 多字符统计:start和end为默认参数
函数说明:
str3 = str1.strip(str2)
其中,str1是操作字符串,str2是待移除指定的字符或字符序列。str3是移除后生成的新字符串。
str_temp1 = " 123 ABCDEFG 321 "
str_temp2 = "123 ABCDEFG 321 "
str_temp3 = "123 ABCDEFG 321 "
print(str_temp1.strip()) # 【输出结果】"123 ABCDEFG 321"
print(str_temp2.strip('12')) # 【输出结果】"3 ABCDEFG 321 "
print(str_temp3.strip('3')) # 【输出结果】"123 ABCDEFG 321 "
txt_temp1 = "_hello_world_"
print(txt_temp1.rstrip('_')) # 【输出结果】"_hello_world"
txt_temp2 = " _hello_world_ "
print(txt_temp2.rstrip(' ')) # 【输出结果】" _hello_world_"
str_temp = "I LOVE python"
print(str_temp.upper()) # 【输出结果】I LOVE PYTHON
str_temp = "I LOVE python"
print(str_temp.lower()) # 【输出结果】i love python
str_temp = "I LOVE python"
print(str_temp.title()) # 【输出结果】I Love Python
函数说明:
str.ljust(width, fillchar)
输入参数:
- str:表示要进行填充的字符串;
- width:表示包括 str 本身长度在内,字符串要占的总长度;
- fillchar:指定填充字符串时所用的字符,默认情况使用空格(可选参数)。
S = 'www.baidu.com'
addr = 'http://www.baidu.com'
print(S.ljust(35,'-')) # 【输出结果】www.baidu.com--------------------
print(addr.ljust(35,'-')) # 【输出结果】http://www.baidu.com-------------
函数说明:
str.rjust(width, fillchar)
输入参数:
- str:表示要进行填充的字符串;
- width:表示包括 str 本身长度在内,字符串要占的总长度;
- fillchar:指定填充字符串时所用的字符,默认情况使用空格(可选参数)。
S = 'http://www.baidu.com/python'
addr = 'http://www.baidu.com'
print(S.rjust(35,'-')) # 【输出结果】-----http://www.baidu.com/python
print(addr.rjust(35,'-')) # 【输出结果】------------http://www.baidu.com
函数说明:
str.center(width, fillchar)
输入参数:
- str:表示要进行填充的字符串;
- width:表示包括 str 本身长度在内,字符串要占的总长度;
- fillchar:指定填充字符串时所用的字符,默认情况使用空格(可选参数)。
S = 'http://www.baidu.com/python/'
addr = 'http://www.baidu.com'
print(S.center(35, '-')) # 【输出结果】----http://www.baidu.com/python/---
print(addr.center(35, '-')) # 【输出结果】--------http://www.baidu.com-------
函数说明:
str.find(sub, start, end)
输入参数:
- sub:指定的子串
- start:索引的起始位置。默认值为0。
- end:索引的结束位置。默认值为字符串长度len(str)。
str1 = '123xyzzaraabc'
print(str1.find('z')) # 结果 5
函数说明:
str.find(sub, start, end)
输入参数:
- sub:指定的子串
- start:索引的起始位置。默认值为0。
- end:索引的结束位置。默认值为字符串长度len(str)。
str1 = '123xyzzaraabc'
print(str1.rfind('z')) # 结果 6
函数说明:
str.index(sub, start, end)
输入参数:
- sub:指定的子串
- start:索引的起始位置。默认值为0。
- end:索引的结束位置。默认值为字符串长度len(str)。
A = '123xyzzaraabc'
print(A.index('xyz')) # 结果 3
print(A.index('zzz')) # 报错 :ValueError: substring not found
函数说明:
str.replace('old_str', 'new_str', count)
输入参数:
- old_str:指定待替换的字符或子串
- new_str:替换的字符或子串
- count:替换的次数,默认全部替换。
备注:当查看字符串时,发现原字符串并没有发生改变,说明str.replace()函数并不对原有的字符串进行改变。
str1 = '1112 QQQ QQQ 444 QQQ'
str1.replace('1', '5') # 不改变原字符串
print(str1)
str2 = str1.replace('1', '5') # 默认全部替换
print(str2)
str3 = str1.replace('Q', 'g', 7) # 指定替换次数
print(str3)
'''
1112 QQQ QQQ 444 QQQ
5552 QQQ QQQ 444 QQQ
1112 ggg ggg 444 gQQ
'''
函数说明:
str.endswith(suffix, start, end)
输入参数:
- suffix:后缀。可以是字符、字符串、元组(常用于判断文件类型)。
- start:索引字符串的起始位置。默认0。
- end:索引字符串的结束位置。默认字符串的长度。
备注:空字符的情况。返回值通常为True。
str = "i love python"
print("1:",str.endswith("")) # 空字符
print("2:",str.endswith("n"))
print("3:",str.endswith("python"))
print("4:",str.endswith("n",0, 6)) # 索引 'i love' 是否以 'n' 结尾。
print("5:",str.endswith(("n","z"))) # 遍历元组,任意一个满足条件即返回True
print("6:",str.endswith(("k","m"))) # 遍历元组,任意一个满足条件即返回True
# 判断文件类型
file = "python.txt"
if file.endswith("txt"): # 字符串类型
print("该文件为文本。")
elif file.endswith(("AVI","WMV","RM")): # 元祖类型
print("该文件为视频。")
else:
print("文件格式未知。")
'''
1: True
2: True
3: True
4: False
5: True
6: False
该文件为文本。
'''
中文汉字和英文数字的unicode编码范围
方法 | Unicode数字 | 全角数字(双字节) | 罗马数字 | 汉字数字 | byte数字(单字节) | 浮点数 | 负数 | 科学计数法 | 二进制 | 八进制 | 十六进制 |
---|---|---|---|---|---|---|---|---|---|---|---|
isdecimal() | True | True | False | False | Error | False | False | False | False | False | False |
isdigit() | True | True | False | False | True | False | False | False | False | False | False |
isnumeric() | True | True | True | True | Error | False | False | False | False | False | False |
str = '123'
print(str.isdecimal())
print(str.isdigit())
print(str.isnumeric())
'''
True
True
True
'''
- (1)
str.isupper()
:判断字符串中,含有字母的部分是否全大写。- (2)
str.islower()
:判断字符串中,含有字母的部分是否全小写。- (3)
str.istitle()
:检测字符串中,所有单词拼写的首字母是否为大写,且其他字母为小写。
str = '123aaa'
print(str.islower())
print(str.isupper())
str = 'This Is All'
print(str.istitle())
str = 'This Is ALL'
print(str.istitle())
'''
True
False
True
False
'''
str = '12 aaAA'
print(str.isalpha())
str = ' aaAA'
print(str.isalpha())
str = 'aaAA'
print(str.isalpha())
'''
False
False
True
'''
str = '12aaAA'
print(str.isalnum())
str = '12aa AA'
print(str.isalnum())
'''
True
False
'''
str = ' 123aaa'
print(str.isspace())
str = ' '
print(str.isspace())
str = ' '
print(str.isspace())
'''
False
True
True
'''
函数说明:
sorted(iterable, key=None, reverse=False)
输入参数:
iterable
:可迭代的对象(如:字典、列表)。key
:可迭代类型中某个属性,对指定函数进行排序。默认=None
reverse
:默认升序(reverse=False)、降序(reverse=Ture)。备注:字符串按照ASCII的大小进行排序。默认先排序数字(0 ~ 9),再排序大写字母(A ~ Z),后排序小写字母(a ~ z)。
lst1 = (5, 4, 3, -2, 1)
L1 = sorted(lst1)
L2 = sorted(lst1, key=abs)
L3 = sorted(lst1, reverse=True)
print(L1) # 【输出结果】[-2, 1, 3, 4, 5]
print(L2) # 【输出结果】[1, -2, 3, 4, 5]
print(L3) # 【输出结果】[5, 4, 3, 1, -2]
###################################################################################
lst2 = ('F', 'D', 'Y', 'e', 'a', 'v', '9', '6')
L4 = sorted(lst2)
L5 = sorted(lst2, key=str.lower) # 对指定函数进行排序(将所有字母转换为小写,然后排序。不改变原字符串。)
print(L4) # 【输出结果】['6', '9', 'D', 'F', 'Y', 'a', 'e', 'v']
print(L5) # 【输出结果】['6', '9', 'e', 'F', 'v', 'Y']
函数说明:
map(function, iterable)
输入参数:
function
:指定函数。iterable
:可迭代对象
print('返回一个迭代器: ', map(int, (1, 2, 3)))
# 返回一个迭代器:
结果需指定数据结构进行转换后输出
print('将元组转换为list: ', list(map(int, (1, 2, 3))))
print('将字符串转换为list: ', tuple(map(int, '1234')))
print('将字典中的key转换为list: ', set(map(int, {1: 2, 2: 3, 3: 4})))
'''
将元组转换为list: [1, 2, 3]
将字符串转换为list: (1, 2, 3)
将字典中的key转换为list: {1, 2, 3}
'''
################################################################################
dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]
print(list(map(lambda x : x['name'] == 'python', dict_a)))
print(dict(map(lambda x : x['name'] == 'python', dict_a)))
"""
[True, False]
TypeError: cannot convert dictionary update sequence element #0 to a sequence
"""
函数说明:
filter(function,iterable)
输入参数:
function
:判断函数iterable
:可迭代对象函数功能:将序列中的每个元素循环传递给判断函数,并返回结果为True的元素组合成的新列表。
print('返回一个迭代器: ', filter(lambda x: x, list_num))
# 返回一个迭代器:
结果需指定数据结构进行转换后输出
list_num = [1, 2, 3, 0, 8, 0, 3]
print(list(filter(lambda x: x, list_num))) # 过滤:数字0
list_word = ['a', 'B', 'c', 'd', 'E']
print(tuple(filter(lambda x: x.isupper(), list_word))) # 过滤:小写字母
print(set(filter(lambda x: x.islower(), list_word))) # 过滤:大写字母
"""
[1, 2, 3, 8, 3]
('B', 'E')
{'c', 'd', 'a'}
"""
################################################################################
dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]
print(list(filter(lambda x : x['name'] == 'python', dict_a)))
print(dict(filter(lambda x : x['name'] == 'python', dict_a)))
"""
[{'name': 'python', 'points': 10}]
{'name': 'points'}
"""
reduce
函数在python2
中是个内置函数,但在python3
中已被移到functools
模块。
函数说明:
reduce(function, iterable, initializer)
输入参数:
function
:指定函数(输入为两个元素)iterable
:可迭代对象initializer
:初始参数(可选),即指定第一个元素的值,然后与序列的第一个元素执行指定函数。
# 常与匿名函数lambda同时使用
from functools import reduce
print(reduce(lambda x,y: x+y, [1,2,3]))
print(reduce(lambda x,y: x+y, [1,2,3], 10)) # 表达式:取和
print(reduce(lambda x,y: x if x < y else y, [1,2,3])) # 表达式:取最小值
"""
6
16
1
"""
性能对比:reduce相较于for循环,结构更简洁,但运行速度更慢。
from functools import reduce
import time
def test_for(arr):
out = arr[0]
for i in arr[1:]:
out += i
return out
def test_reduce(arr):
out = reduce(lambda x, y: x + y, arr)
return out
a = [i for i in range(100000)]
t1 = time.perf_counter() # 起始时间
print(test_for(a))
t2 = time.perf_counter() # for循环运行时间
print(test_reduce(a))
t3 = time.perf_counter() # reduce运行时间
print('for循环耗时:', (t2 - t1))
print('reduce耗时:', (t3 - t2))
"""
4999950000
4999950000
for循环耗时: 0.0089341
reduce循环耗时: 0.0122448
"""
函数说明1:
函数名 = lambda argument_list: expression
函数说明2:函数名 = lambda 参数: 表达式
(更容易理解,固定语法)
输入参数:
lambda
:Python关键字argument_list
:(输入)参数列表,即输入可以是多个参数。expression
:变量表达式。只能是单行,而def可以有多个。返回值
:变量表达式的计算结果即为lambda函数的返回值。特点1:匿名函数,即没有名字的函数。Python中的lambda
特点2:功能简单:只能单行expression决定了lambda函数不可能完成复杂的逻辑,甚至不需要专门的名字来说明。
❤️ 常用实例
a0 = lambda x: 1 if x > 10 else 0 # 判断输入参数的大小,大于取1,小于取0
a1 = lambda x, y: x*y # 函数输入是x和y,输出是它们的积x*y
a2 = lambda : None # 函数没有输入参数,输出是None
a3 = lambda *args: sum(args) # 输入是任意个数的参数,输出是它们的和(隐性要求是输入参数必须能够进行加法运算)
a4 = lambda **kwargs: 1 # 输入是任意键值对参数,输出是1
print(a0(2))
print(a1(2, 3))
print(a2())
print(a3(2, 3, 4))
print(a4())
"""
0
6
None
9
1
"""
❤️ 四个用法
(1)将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。
- 如:
add0 = lambda x, y: x+y
,返回两个变量的和。与add(1,2)==3
等效。
(2)将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换。
- 如:
time.sleep = lambda x: None
。返回None,即调用标准库time中的sleep函数不执行。
(3)将lambda函数作为其他函数的返回值,返回给调用者。
- 如:
return lambda x, y: x+y
,返回一个加法函数。此时lambda函数实际上是定义在某个函数内部的函数,称为嵌套函数或内部函数。
(4)将lambda函数作为参数传递给其他函数。如:sorted()、filter()、map()、reduce()。
11、sorted():此时lambda函数用于对列表中所有元素进行排序。
- 如:
sorted([1, 2, 3, 4, 5], key=lambda x: abs(3-x))
。
将列表[1, 2, 3, 4, 5]中元素与3的距离,从小到大进行排序,其结果是列表:[3, 2, 4, 1, 5]。22、filter():此时lambda函数用于过滤列表元素。
- 如:
list(filter(lambda x: x%3==0, [1, 2, 3]))
。
将列表[1,2,3]中能够被3整除的元素过滤出来,其结果是列表:[3]。33、map():此时lambda函数用于对列表中每一个元素的共同操作。
- 如:
list(map(lambda x: x+1, [1, 2, 3]))
。
将列表[1, 2, 3]中的元素分别加1,其结果是列表:[2, 3, 4]。44、reduce():此时lambda函数用于列表中两两相邻元素的结合。
from functools import reduce
reduce(lambda a, b: a+b, [1, 2, 3, 4])
。
将列表[1, 2, 3, 4]中的元素,从左往右取出2个元素并执行指定函数,然后将输出结果与第3个元素传入指定函数,…,循环到最后一个元素。其结果是整型:10。
备注:reduce函数原本在python2中也是个内置函数,不过在python3中被移到functools模块中。
函数说明:
index, value = enumerate(iteration, start)
输入参数:
iteration
:可迭代对象。start
:自定义起始索引值,可选参数,默认为0。
备注:指定起始点,改变的只是可迭代对象中每个元素对应的索引的变化。即无论是否指定起始点,可迭代对象都是从第一个元素读取。输出参数:
index
:索引值。value
:可迭代对象中索引对应的元素值。
特点1:匿名函数,即没有名字的函数。
list1 = [1,2,3,4,5,6]
for index, value in enumerate(list1): # 默认起始点
print(indx, value)
########################################
print('*'*10)
########################################
for indx, value in enumerate(list1, 2): # 指定起始点
print(indx, value)
"""
0 1
1 2
2 3
**********
5 1
6 2
7 3
"""
函数说明:
res = zip(iterable_1, iterable_2,..., iterable_n)
输入参数:
iteration
:n个可迭代对象。res
:返回一系列元组的迭代器,第 i 个元组包含各输入iterables的第 i 个元素。
解压缩:unzip(把组合序列进行反向分解) —— python没有unzip函数
函数说明:zip(*res)
输入参数:
*
:表示解包运算符。res
:由zip()生成的结果。
# (1)不传递参数,返回空的迭代器
print('1:', zip()) #
print('1:', list(zip())) # []
######################################################################
# (2)传递一个参数,返回tuple的迭代器。
print('2:', list(zip([1, 2, 3]))) # [(1,), (2,), (3,)]
######################################################################
# (3)传递两个参数,返回tuple的迭代器。
a3 = ['a', 'c', 'b']
b3 = ['2', '1']
print('3:', list(zip(a3, b3))) # [('a', '2'), ('c', '1')]
print('3:', dict(zip(a3, b3))) # {'a': '2', 'c': '1'}
######################################################################
# 4.1、传递长度不等的参数(截取最短,删除冗余)
print('4:', list(zip(range(3), range(100)))) # [(0, 0), (1, 1), (2, 2)]
# 4.2、传递长度不等的参数,若想要以最长的进行迭代处理,缺少部分补None
import itertools as it
fruits = ['apple', 'banana', 'melon', 'strawberry']
prices = [10, 20, 30]
print(list(it.zip_longest(fruits, prices))) # [('apple', 10), ('banana', 20), ('melon', 30), ('strawberry', None)]
######################################################################
# (5)并行排序(以第一个输入参数进行排序)
print('5:', sorted(list(zip(a3, b3)))) # [('a', '2'), ('c', '1')]
print('5:', sorted(list(zip(b3, a3)))) # [('1', 'c'), ('2', 'a')]
######################################################################
# (6)解压缩序列:解包运算符*。
result = zip(a3, b3)
origin = list(zip(*result)) # 创建两个不同的元祖(数字和字母)
print('6:', origin[0]) # ('a', 'c')
print('6:', origin[1]) # ('2', '1')
######################################################################
# (7)将数据成对进行计算
total_sales = [52000.00, 51000.00, 48000.00]
prod_cost = [46800.00, 45900.00, 43200.00]
for sales, costs in zip(total_sales, prod_cost):
profit = sales - costs
print(f'Total profit: {profit}')
"""
Total profit: 5200.0
Total profit: 5100.0
Total profit: 4800.0
"""
- (1)__ iter __ ( )方法:可迭代对象。让对象可以用
for … in obj
遍历元素。- (2)__ getitem __ ( )方法:可访问对象。让对象可以用
[index]
访问元素。- (3)__ next __ ( ) 或 next( )方法:可调用对象。逐个返回数据流中的元素。
函数说明:
iter(object, sentinel)
输入参数:
object
:可迭代对象,但不一定可调用。若传入 sentinel 则必须是可调用对象。
- 可迭代对象:支持迭代协议(即定义有 __ iter __ ( )函数),或者支持序列访问协议(即定义有 __ getitem __ ( )函数),否则会返回TypeError异常。
sentinel(哨符, 又叫标记符)
:(可选参数) 当枚举到的值等于sentinel时,则自动停止。且不会输出sentinel值。
- 可调用对象(即定义有__ next __ ( ) 或支持 next( )方法)。
输出参数:返回迭代器对象
# 1、iter迭代器与next一起使用
a = [1, 2]
a_iter = iter(a)
print(a_iter) #
print(next(a_iter)) # 1
print(next(a_iter)) # 2
# print(next(a_iter)) # 迭代器耗尽,未指定默认值,提示 StopIteration 异常
###################################################################
# 2、iter迭代器与(自定义)函数一起使用
from random import randint
def d10():
return randint(1, 10)
# 随机产生1~10之间的整数,遇到5就停止
for i in iter(d10, 5):
print(i)
函数说明:
next(iterator, default)
输入参数:
iteration
:迭代器(不是可迭代对象,可迭代对象不是迭代器)default
:(可选参数)如果迭代器耗尽则返回此默认值。 如果没有给出此默认值,则抛出 StopIteration 异常。输出参数:返回下一个输入行
a = [1, 2]
it = iter(a)
print(next(it)) # 1
print(next(it)) # 2
# print(next(it)) # 迭代器耗尽,未指定默认值,提示StopIteration 异常。
print(next(it, 5)) # 5
print(next(it, 5)) # 5
######################################################################
b = [1, 3, 5]
it = iter(b)
while True:
try:
x = next(it)
print (x, end=" ")
except StopIteration: # 遇到StopIteration就退出循环
break
"""
1 3 5
"""
str1 = input()
print(str1)
print('提示语句:', str1)
print(type(str1))
'''
asd123!#
提示语句: asd123!#
'''
常用的强转类型 | 说明 |
---|---|
int(input()) |
强转为整型(int类型只能输入一个整数字符串) |
map(int, input().spilt()) |
强转为整型(map函数可以输入多个整数字符串) |
list(input()) |
强转为列表(输入可以是任意类型) |
- 相同点:两个方法都可以进行for循环迭代提取字符,提取后都为字符串类型。
- 不同点:
str = list(input())
将输入字符串转换为list类型,可以进行相关操作。如:str.append()
str_list = ['A', 'aA', 2.0, '', 1]
- 方法一:
print(''.join(str))
- 方法二:
print(''.join(map(str, str_list)))
备注:若list中包含数字,则不能直接转化成字符串,否则系统报错。
- 方法一:
print(''.join([str(ii) for ii in str_list]))
- 方法二:
print(''.join(map(str, str_list)))
map():根据给定函数对指定序列进行映射。即把传入函数依次作用到序列的每一个元素,并返回新的序列。
(1) 举例说明:若list中包含数字,则不能直接转化成字符串,否则系统报错。
str = ['25', 'd', 19, 10]
print(' '.join(str))
'''
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/test.py", line 188, in
print(' '.join(str))
TypeError: sequence item 3: expected str instance, int found
'''
(2)举例说明:若list中包含数字,将list中的所有元素转换为字符串。
str_list = ['A', 'aA', 2.0, '', 1]
print(''.join(str(ii) for ii in str_list))
print(''.join([str(ii) for ii in str_list]))
print(''.join(map(str, str_list))) # map():根据给定函数对指定序列进行映射。即把传入函数依次作用到序列的每一个元素,并返回新的序列。
'''
AaA2.01
AaA2.01
AaA2.01
'''
【Python】print()函数的用法
x, y = 1, 9
print('{},{}' .format(x, y)) # 打印方法一
print('*'*10) # 打印分割符
print(x, ',', y) # 打印方法二
'''
1,9
**********
1 , 9
'''
函数说明:
range(start=0,stop,step=1)
输入参数:
- start:序列的起始点,默认值0。
- stop:序列的终止点。
- step:滑动步长,默认为1。正数表示迭代上升,负数表示迭代下降。
备注:前闭后开[A,B),即可以取到A值,但取不到B值。
# (1)指定stop=9, start默认为0,step默认为1
for i in range(9):
print('A =', i)
'''
A = 0
A = 1
A = 2
A = 3
A = 4
A = 5
A = 6
A = 7
A = 8
'''
# (2)指定start=2, stop=9, step默认为1
for i in range(2, 9):
print('B =', i)
'''
B = 2
B = 3
B = 4
B = 5
B = 6
B = 7
B = 8
'''
# (3)指定start=2, stop=9, step=-2
for i in range(9, 2, -2):
print('C =', i)
'''
C = 9
C = 7
C = 5
C = 3
'''
函数说明:
len(object)
str_temp = "Hello, boy !"
print(len(str_temp)) # 【输出结果】12
#############################################
list_temp = ['h', 'e', 'l', 'l', 'o']
print(len(list_temp)) # 【输出结果】5
#############################################
dict_temp = {'num': 520, 'name': "do do"}
print(len(dict_temp)) # 【输出结果】2
#############################################
tuple_temp = ('G', 'o', 'o', 'd')
print(len(tuple_temp)) # 【输出结果】4
函数说明:
eval(expression, globals, locals)
输入参数:
expression
:字符串表达式。输入可以是任意类型。globals
:变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。locals
:变量作用域,局部命名空间,如果被提供,可以是任何映射对象。优先级:locals > globals > expression。若三个参数有相同的变量,则按照优先级进行赋值。
print(type(eval('1')))
print(type(eval('1.0')))
print(type(eval("'1'")))
print(type(eval('{1}')))
print(type(eval('[1,2]')))
print(type(eval('{2:2}')))
print(type(eval('(1,2)')))
"""
"""
##########################
# (1)expression参数示例
a1 = 10
temp1 = eval("a1+1") # a1=10
print(temp1)
print(type(temp1))
##########################
# (2)globals参数示例
a2 = 10
g = {'a2': 4}
temp2 = eval("a2+1", g) # a2=4
print(temp2)
print(type(temp2))
##########################
# (3)locals参数示例
a3 = 10
b3 = 20
c3 = 30
g = {'a3': 6, 'b3': 8}
t = {'b3': 100, 'c3': 10}
temp3 = eval("a3+b3+c3", g, t) # a3=6、b3=100、c3=10
print(temp3)
print(type(temp3))
##########################
"""
11
5
116
"""
Python标准库:import math(常量 + 数学函数 + 幂与对数 + 三角函数)
函数说明:
round(x, n)
输入参数:
x
:浮点数。n
:保留小数点的位数。
备注:若为整数,则即使指定了保留小数点的位数,也直接输出整数。
四舍五入的规则:
(1)要求保留位数的后一位 <=4,则进位。如:round(5.214,2)
,结果为5.21。
(2)要求保留位数的后一位 =5,且该位数后面没有数字,则不进位,如:round(5.215, 2)
,结果为5.21。
(3)要求保留位数的后一位 =5,且该位数后面有数字,则进位,如:round(5.2151, 2)
,结果为5.22。
(4)要求保留位数的后一位 >=6,则进位。如:round(5.216,2)
,结果为5.22。
print(round(5, 2)) # 5 # 整数
print(round(5.214, 2)) # 5.21 # <=4,则进位
print(round(5.215, 2)) # 5.21 # =5,且该位数后面没有数字,则不进位
print(round(5.2151, 2)) # 5.22 # =5,且该位数后面有数字,则进位
print(round(5.216, 2)) # 5.22 # >=6,则进位
函数说明:
sum(iterable, start)
输入参数:
iterable
:可迭代对象(如:列表、元组、集合)start
:指定相加的参数,默认为0。
print(sum([1,2,3])) # 6
print(sum((1,2,3))) # 6
print(sum({1,2,3})) # 6
print(sum(range(5))) # 10
##########################
print(sum([1,2,3], 2)) # 8
print(sum((1,2,3), 2)) # 8
print(sum({1,2,3}, 2)) # 8
print(sum(range(5), 2)) # 12
abs() | fabs() |
---|---|
abs()是python的内置函数 | fabs()是math模块中的函数 |
适用于float型、int型、复数类型 | 只适用于float型、int型 |
(若输入为整型,则返回整型)若输入为浮点型或复数类型,则返回浮点型。 | (只返回浮点值)若输入为整型,则自动保留一个小数。 |
import math
# 输入整型
print(abs(10)) # 10
print(math.fabs(10)) # 10.0
# 输入浮点型
print(abs(10.125)) # 10.125
print(math.fabs(10.125)) # 10.125
# 输入复数类型
print(abs(10.125+12j)) # 15.62850460696736
# print(math.fabs(10.125+12j)) # TypeError: can't convert complex to float
方法1:
数字**0.5
x = int(input('数字:'))**0.5 # 数字:50
print(x) # 7.0710678118654755
print(type(x)) #
方法2:
pow(数字,次方)
x = pow(int(input('数字:')), 0.5) # 数字:50
print(x) # 7.0710678118654755
print(type(x)) #
方法3:
math.sqrt(数字)
import math
x = math.sqrt(int(input('数字:'))) # 数字:50
print(x) # 7.0710678118654755
print(type(x)) #
方法4:
cmath.sqrt(数字)
import cmath
x = cmath.sqrt(int(input('数字:'))) # 数字:50
print(x) # (7.0710678118654755+0j)
print(type(x)) #
1.【Python3】内置函数(大全)
2.【Python3】字符串常用方法(大全)
3.【Python】encode()函数
4.【Python】decode()与encode()详解
5.【Python】字符串isdecimal() isdigit()isnumeric()等判断方法的区分。
6.TypeError: sequence item 0: expected str instance, int found的解决办法