Python基本数据类型(Number、String)

mac2024-05-23  37

python3中有六种标椎数据类型

Number(数字),String(字符串),List(列表),Tuple(元组),Set(集合),Dictionary(字典) 其中不可变数据有三种: Number,String,Tuple 可变数据有三种:List,Dictionary,Set

定义变量

python定义变量直接变量名=变量值,不需要指定变量类型,当变量值确定的时候,变量的类型就确定了,一个变量上下文可以通过赋值不同的变量值改变类型

可以用del 删除对象的引用

del a del a,b,c

Number(数字)

python3中支持int,float,bool(True/False–> 1/0),complex(复数) int 没有限制大小 查看变量的类型可以用type()函数,也可以用isinstance()判断

# <class 'int'> print(type(3)) # True print(isinstance(1, int))

type不会将子类判断成父类类型 isinstance 会认为子类是父类类型

class A: pass class B(A): pass obj_b = B() obj_a = A() print(type(obj_a)) # <class '__main__.A'> print(type(obj_b)) # <class '__main__.B'> print(isinstance(obj_a, A)) # True print(isinstance(obj_a, B)) # False print(isinstance(obj_b, A)) # True print(isinstance(obj_b, B)) # True

数值运算 加(+) 减(-) 乘(*) 除(/ 或 //) 除法中 / 返回一个浮点数,// 返回一个整数 取余(%) 乘方(**)

print(2/4) # 0.5 print(2//4) # 0 print(5%3) # 2 print(2**3) # 8

复数: 我们把形如z=a+bj(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位。当z的虚部等于零时,常称z为实数;当z的虚部不等于零时,实部等于零时,常称z为纯虚数。表达式为a+bj, python中可以用a+bj表示,或者complex(a,b),a和b都是浮点型 数字类型转换操作: int(a) 将a 转换成一个整数 float(a) 将a 转换成一个浮点数 complex(a) 将a 转换成一个复数,实数为a,虚数部分为0 complex(a,b) 将a,b 转换成一个复数,a为实数,b为虚数

常用数学函数 部分函数需要导入math模块

import math

abs(x) 绝对值 ceil(x) 向上取整 floor(x) 向下取整 fabs(x) 取绝对值 max(x1,x2,x3…) 取最大值 min(x1,x2,x3…) 取最小值 modf(x) 返回x的整数和小数部分,符号与x相同,整数部分表示为浮点型 pow(x,y) 计算x**y round(x,n) 计算x的四舍五入值,n指定小数点后位数,可以省略 sqrt(x) 计算x的平方根 sin(x) 计算弧度x正弦值 cos(x) 计算弧度x余弦值 tan(x) 计算弧度x正切值 asin(x) 计算弧度x反正弦 acos(x) 计算弧度x反余弦 atan(x) 计算弧度x反正切 degrees(x) 将弧度x转换成角度 radians(x) 将角度x转换成弧度 两个数学常量: pi 和 e

字符串

python 中单引号和双引号意义相同,反斜杠转义特殊字符,用加号(+)连接字符串,*可以重复字符串 python中没有字符类型

str1 = 'abc' str2 = 'xyz' print(str1 + str2) #abcxyz print(str1*2) #abcabc

字符串截取 python中可以用[index]获取字符串中的字符 [:]用来截取字符串,左闭右开,有两种索引方式,一种是从左到右,0开始,一种是从右到左-1开始 in : 字符串A in 字符串B ,B包含A则返回True not in: 字符串A not in 字符串B ,B不包含A 返回True r : r加在字符串前面,该字符串忽略转义

str1 = '123456' print('str1[2]:',str1[2]) print('str1[1:3]:',str1[1:3]) print('12' in str1) print('15' not in str1) print('abc\tdef') print(r'abc\tdef') ''' ---输出结果如下--- str1[2]: 3 str1[1:3]: 23 True True abc def abc\tdef '''

字符串格式化 字符串常用格式化符号: %c 格式化字符及ASCII码 %s 格式化字符串 %d 格式化整数 %u 格式化无符号整型 %o 格式化无符号八进制数 %x 格式化无符号十六进制数 %X 格式化无符号十六进制数(大写) %f 格式化浮点数,可以指定精度 %e 使用科学计数法格式化浮点数

list1 = [('Tom', 'Alen'), ('二狗', '翠花'), ('鸡毛', '蒜皮')] for i, j in list1: print('%s 喜欢 %s' % (i, j)) ''' Tom 喜欢 Alen 二狗 喜欢 翠花 鸡毛 喜欢 蒜皮 '''

python2.6新增了format()函数,更加的灵活 可以指定参数位置

list2 = [('Tom', 'Alen'), ('二狗', '翠花'), ('鸡毛', '蒜皮')] for i,j in list2: print("{} 喜欢 {}".format(i,j)) print("{1} 讨厌 {0}".format(i,j)) print('{1} 喜欢 {0} 弟弟,讨厌{0}'.format(i,j)) print('-----------') ''' Tom 喜欢 Alen Alen 讨厌 Tom Alen 喜欢 Tom 弟弟,讨厌Tom ----------- 二狗 喜欢 翠花 翠花 讨厌 二狗 翠花 喜欢 二狗 弟弟,讨厌二狗 ----------- 鸡毛 喜欢 蒜皮 蒜皮 讨厌 鸡毛 蒜皮 喜欢 鸡毛 弟弟,讨厌鸡毛 ----------- '''

str.format(*args,**kwargs)详细信息 Format String Syntax(格式字符串语法)

"First, thou shalt count to {0}" # 0指定第一个参数 "Bring me a {}" # 按照默认顺序补充 "From {} to {}" # 等价于"From {0} to {1}" "My quest is {name}" # 指定变量值 #例如: print('名字:{name},年龄{age}'.format(name='大黄',age=3))#名字:大黄,年龄3 "Weight in tons {0.weight}" # 可传入对象,第一个参数的weight属性 #例如: class Dog(): def __init__(self,name,age): self.name = name self.age = age dog1 = Dog('大黄',3) dog2 = Dog('二狗',4) print('名字:{0.name},年龄{0.age}'.format(dog1))# 名字:大黄,年龄3 print('名字:{1.name},年龄{0.age}'.format(dog1,dog2))# 名字:二狗,年龄3 "Units destroyed: {players[0]}" # players的第一个元素 #例如: print('名字{name[1]}'.format(name=['aa','bb','cc']))#名字bb

支持三种转换: !s 等价于str() !r 等价于 repr() !a 等价于 ascii()

"Harold's a clever {0!s}" # Calls str() on the argument first "Bring out the holy {name!r}" # Calls repr() on the argument first "More {!a}" # Calls ascii() on the argument first #例子: name = 'Bob' age = 23 print('名字{0!s},年龄{1!s}'.format(name,age)) print('名字{0!r},年龄{1!r}'.format(name,age)) print('名字{0!a},年龄{1!a}'.format(name,age)) ''' 名字Bob,年龄23 名字'Bob',年龄23 名字'Bob',年龄23 ''' ''' *arg表示任意多个无名参数,类型为tuple;**kwargs表示关键字参数,为dict。 def format(self, *args, **kwargs): pass ''' list1 = ['aa',1,2,'ss'] print('{}---{}---{}---{}'.format(*list1)) dict1 = {'name':'Cc','age':23} print('名字{name},年龄{age}'.format(**dict1)) tuple1 = (1,'bb',2.3) print('ID {},名称{},重量{}'.format(*tuple1)) ''' aa---1---2---ss 名字Cc,年龄23 ID 1,名称bb,重量2.3 '''

< > = ^ 的用法

''' < 强制字段在可用空间内左对齐(这是大多数对象的默认设置) > 强制字段在可用空间内右对齐(这是数字的默认值) = 强制将填充放置在符号(如果有)之后但在数字之前, 这用于以“ +000000120”形式打印字段, 此对齐选项仅对数字类型有效,当字段宽度紧接“ 0”时,它将成为默认值 ^ 强制字段在可用空间内居中 ''' print('{:<20}'.format('abcd')) print('{:>20}'.format('abcd')) print('{:^20}'.format('abcd')) print('{:0=20}'.format(999)) ''' abcd abcd abcd 00000000000000000999 ''' e 指数表示法,用字母'e'以科学计数法打印数字以表示指数,默认精度为6, E 指数表示法,'e'除使用大写字母'E'作为分隔符外,其余均相同, f 浮点数,将数字显示为定点数字,默认精度为6, F 浮点数,同'f',但转换 nan到 NAN和inf到INF, g 通用格式,对于给定的精度,这会将数字四舍五入为有效数字,然后根据结果的大小以浮点数或科学计数法格式化结果, 默认精度是6 G 通用格式,与g相同,如果数字太大则切换到E,无限和NaN的表示也都是大写的, n 数字,与g相同,而且根据当前的语言环境设置来插入适当的数字分隔符 % 百分比,将数字乘以100并以浮点数('f')格式显示,后跟一个百分号

官方例子:

>>> '{:+f}; {:+f}'.format(3.14, -3.14) # show it always '+3.140000; -3.140000' >>> '{: f}; {: f}'.format(3.14, -3.14) # show a space for positive numbers ' 3.140000; -3.140000' >>> '{:-f}; {:-f}'.format(3.14, -3.14) # show only the minus -- same as '{:f}; {:f}' '3.140000; -3.140000' >>> points = 19 >>> total = 22 >>> 'Correct answers: {:.2%}'.format(points/total) 'Correct answers: 86.36%' >>> import datetime >>> d = datetime.datetime(2010, 7, 4, 12, 15, 58) >>> '{:%Y-%m-%d %H:%M:%S}'.format(d) '2010-07-04 12:15:58'

String类型的一些方法

str = 'asdf' str.capitalize() # 返回字符串的副本,首字母大写,其余字母小写 str.casefold() ''' 和lower()类似,比lower()强大,可以适用于其他语言, 例如德语中的'ß',小写是'ss',lower()的结果还是'ß' ''' str.center(1) ''' def center(self, width, fillchar=None) width指定宽度 fillchar 指定填充字符,如果width小于字符串长度,则width值为字符串长度 ''' str.count('a') ''' def count(self, sub, start=None, end=None) 返回[start,end]范围内sub 的不重复出现次数 'aaa' 中 'aa' 出现一次 ''' str.endswith('') ''' def endswith(self, suffix, start=None, end=None) 判断字符串是否以suffix结尾,suffix也可以是元组类型 ''' str.expandtabs() ''' def expandtabs(self, tabsize=8) 将字符串中的制表符(\t)转换成空格,tabsize可以指定空格数,默认为8 ''' str.find('') ''' def find(self, sub, start=None, end=None) 返回sub在字符串中的最小索引,未找到则返回-1 ''' str.index('') ''' 和find类似,但是如果找不到则报错,ValueError: substring not found ''' str.isalnum() ''' 如果字符串中所有的字符都是字母数字,而且至少有一个字符,返回True ''' str.isalpha() ''' 如果字符串中所有的字符都是字母,而且至少有一个字符,返回True ''' str.isdecimal() # 如果字符串中所有的字符都是十进制字符并且至少有一个字符,返回True str.isdigit() # 如果字符串中都为数字而且至少包含一个字符,返回True str.isidentifier() # 如果字符串是有效的python标识符则返回True str.islower() # 如果字符串中所有能大小写的字符为小写,至少有一个大小写的字符,返回True str.isnumeric() # 如果字符串中所有的字符均为数字字符,至少包含一个字符,返回True str.isprintable() # 如果字符串中所有的字符均可打印或字符串为空,则返回True str.isspace() # 如果字符串中只有空格字符并且至少有一个字符,则返回True str.istitle() # 如果字符串中单词都是大写字母开头并且至少有一个字符,则返回True str.isupper() # 如果字符串中所有能大小写的字符为大写,至少有一个大小写的字符,返回True str.join('') ''' def join(self, iterable) iterable 是可迭代的对象,该方法返回一个以str为分隔符将iterable 中的字符串拼接在一起的字符串,如果iterable 中含有任何非字符串值, 则报错 TypeError ''' str.ljust(1) ''' def ljust(self, width, fillchar=None) 返回长度为width的左对齐字符串,使用指定的fillchar填充 如果width小于字符串长度,则width值为字符串长度 ''' str.lower() # 将字符串中的所有大小写字符转换成小写 str.lstrip() ''' def lstrip(self, chars=None) 返回删除了前缀为chars的字符串,如果省略或者指定chars为None,则默认空格, 如果chars不是前缀,则该方法删除chars的所有组合 ''' str.partition('a') ''' def partition(self, sep) 在第一次出现sep的位置分割字符串,返回一个3元素的元组, 包括分隔符之前的部分,分隔符本身,分隔符之后的部分 如果没有分隔符,也返回一个3元素元组, 包括字符串本身,两个空字符串 ''' str.replace('','') ''' def replace(self, old, new, count=None) 字符串替换,如果count给定值,则替换至第count次出现的位置 ''' str.rfind('') ''' def rfind(self, sub, start=None, end=None) 返回sub在字符串中[start,end]的最大索引,未找到返回-1 ''' str.rindex('') # 类似rfind(),未找到则返回ValueError str.rjust(1) ''' def rjust(self, width, fillchar=None) 返回长度为width的右对齐字符串,使用指定的fillchar填充 如果width小于字符串长度,则width值为字符串长度 ''' str.rpartition('a') ''' def rpartition(self, sep) 在第一次出现sep的位置分割字符串,返回一个3元素的元组, 包括分隔符之前的部分,分隔符本身,分隔符之后的部分 如果没有分隔符,也返回一个3元素元组, 包括两个空字符串,字符串本身 ''' str.rsplit() ''' def rsplit(self, sep=None, maxsplit=-1) 字符串从右到左,使用sep作为分隔符切分,如果指定maxsplit, 则最多切分maxsplit次,如果没有指定sep,则任意长度的空格字符串 是一个分隔符 ''' str.rstrip() ''' def rstrip(self, chars=None) 返回删除了后缀为chars的字符串,如果省略或者指定chars为None,则默认空格, 如果chars不是后缀,则该方法删除chars的所有组合 ''' str.split() ''' def split(self, sep=None, maxsplit=-1) 字符串按照sep分割,如果指定maxsplit, 则最多切分maxsplit次,如果没有指定sep,则任意长度的空格字符串 是一个分隔符,如果字符串的开头和结尾具有空格,则返回结果的头尾 不包含空字符串 ''' str.splitlines() ''' def splitlines(self, keepends=None) 返回字符串中的行列表,在行边界处中断, \n 换行 \r 回车 \r\n 回车+换行 \vor\x0b 垂直制表符 \for\x0c 换页 \x1c 文件分隔符 \x1d 组分隔符 \x1e记录分隔符 \x85 下一行(C1控制码) \u2028 分线器 \u2029 段落分隔符 如果指定keepends=True ,则换行符会包含在结果中 ''' str.startswith('') # 判断字符串是否以prefix为前缀,是返回True str.strip() ''' def strip(self, chars=None) 返回删除了前后缀为chars的字符串,如果省略或者指定chars为None,则默认空格, 如果chars不是前后缀,则该方法删除chars的所有组合 ''' str.swapcase() ''' 将字符串大小写转换,s.swapcase().swapcase() == s不一定True 例如ß, print('ß'.swapcase().swapcase()) #ss print('ß'.swapcase()) #SS ''' str.title() ''' 返回字符串的标题版本,单词以大写字母开头,其余字符为小写字母 ''' str.upper() # 字符串小写字符转换成大写 str.zfill(2) ''' 字符串前填充0,将字符串填充至长度为指定长度,如果字符串以(+或-)为 前缀,则(+或-)继续作为返回字符串的前缀.如果指定的width值小于或等于 字符串长度,则width的值为字符串的长度 '''
最新回复(0)