社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python基本数据类型---数字&字符串

程序媛小庄 • 4 年前 • 332 次点击  
阅读 24

python基本数据类型---数字&字符串

引入

在内存中存储的数据可以是不同的数据类型。比如名字可以使用字符串存储,年龄可以使用数字存储,python有6种基本数据类型,用于各种数据的存储,分别是:numbers(数字类型)、string(字符串)、List(列表)、Tuple(元组)、Dictionary(字典).

本文介绍数字类型和字符串类型。

数字类型(Number)

python数字数据类型用于存储数值,数字类型属于不可变数据类型。

Python支持三种不同的数字类型,分别是:

1.整形(int),不带小数点,不限制大小,可以当做long(长整型)使用,因此Python3中没有long型数字。

2.浮点型(float),带小数点,由整数部分和小数部分组成

3.复数(complex),由实数部分和虚数部分组成,比如a+bj可以用complex(a,b)表示,复数的实部a和虚部b都是浮点型。在实际开发中用的比较少,除非是做工业设计运算。

Python中的数字类型是如何定义的?具体方法如下:

# 整形和浮点型
a = 10
b = 10.2

# 复数
c = complex(1, 2)
复制代码

数字类型是可以进行转换的,但是数字类型是不能将其他数据类型比如字符串 列表等转成数字类型。

'''
int(x) 将x转换为一个整数。
float(x) 将x转换到一个浮点数。
complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
'''
a = 1.0
b = int(a)  # 将a转成整形
复制代码

int类型和float类型之间可以通过数字运算符进行数学运算。

print(2 + 2)
print(10 / 3)  # 总是返回一个浮点数,不同的计算机上得到的结果可能不同,是由于精度问题
复制代码

字符串类型(str)

字符串是Python中最常用的数据类型,使用成对的单引号或者成对的双引号创建字符串,字符串属于不可变数据类型。

name = 'python'
gender = "male"
复制代码

字符串可以把任意其他类型都转成字符串。

res=str({'a':1})
print(res,type(res))
复制代码

字符串的方法非常多,这里介绍一些字符串常用的方法。

第一,获取字符串中指定位置(索引)的值。

字符串中的每个字符都是有索引的,正向索引从0开始,反向索引从-1开始,如下图

image-20210517143421705

想要获取字符串中指定位置的字符,需要通过索引取值(可以正向取值,也可以反向取值)

my_str = 'python'
# 正向取值
str1 = my_str[0]  # P
str2 = my_str[5]  # n
# 反向取值
str3 = my_str[-1]  # n
str4 = my_str[-6]  # P
复制代码

第二,索引扩展--切片,访问一个字符串的子字符串,可以使方括号来截取字符串,语法如下

'''
变量[起始索引:结束索引:步长]
注意:[]取值顾头不顾尾,取出的子字符串不包括结束索引对应的值,可以通过控制步长操作输出的子字符串
'''
my_str = 'python'
# 正向切片
str1 = my_str[0: 5]  # pytho
str2 = my_str[0: 5]  # 等价于my_str[0: 5: 1] ,步长是1
str3 = my_str[0: 5: 2]  # 步长等于2,相当于从第一个字符开始每隔一个取一个值,所以结果是 pto
str4 = my_str[5: 0: -1]  # 步长可以为负数,表示从倒序取子字符串,结果是 nohty
str5 = my_str[:]   # 表示取字符串中的所有字符, python
str6 = my_str[::]  # 表示取字符串中的所有字符, python
str7 = my_str[::-1]  # 表示将字符串反转,nohtyp

# 反向切片
str6 = my_str[-1: -3: -1]  # no
复制代码

第三,查看字符串的长度---len方法

my_str = 


    
'python'
print(len(my_str))  # 6
复制代码

第四,成员运算in和not in

# in 判断hello 是否在 str1里面
>>> 'hello' in str1  
True
# not in:判断tony 是否不在 str1里面
>>> 'tony' not in str1 
True
复制代码

第五,for循环,循环遍历字符串中的每个字符

my_str = 'python'
# 字符串是可迭代对象,依次取出字符串中的每个字符
for i in my_str:
    print(i)
复制代码

第六,字符串运算

字符串之间可以进行运算,但是字符串不能和其他数据类型进行运算

a = hello
b = world
# + 字符串拼接操作
print(a + b)  # helloworld

# * 重复输出字符串
print(a * 2)  # hellohello
复制代码

第七,一大波字符串的内置方法(可以通过字符串点出来的方法),字符串类型有很多的内置方法,但是不经常使用,这里只介绍一些经常使用的,其他不常用的方法希望大家可以自己去学习。

字符串的格式化输出请参照往期文章---与用户交互。

strip() lstrip() rstrip()方法:移除字符串两遍指定字符

str1 = '**tony***'
# 括号内不指定字符,默认移除空白字符,比如空格 制表符tab
str1.strip('*')  # 移除左右两边的指定字符
str1.lstrip('*')  # 只移除左边的指定字符
str1.rstrip('*')  # 只移除右边的指定字符
复制代码

split() rsplit()方法:将字符串按照指定字符进行切分,切分结果是列表

#  括号内不指定字符,默认以空格作为切分符号
str3 = 'hello world'
b = str3.split()
print(b)  # ['hello', 'world']

# split会按照从左到右的顺序对字符串进行切分,可以指定切割次数
str5='C:/a/b/c/d.txt'
print(str5.split('/',1))   # ['C:', 'a/b/c/d.txt']

# rsplit刚好与split相反,从右往左切割,可以指定切割次数
str5='a|b|c'
print(str5.rsplit('|',1))  # ['a|b', 'c']
复制代码

lower() upper()方法:将字符串全部变为小写、大写

>>> str2 = 'My nAme is tonY!'>>> str2.lower()  # 将英文字符串全部变小写my name is tony!>>> str2.upper()  # 将英文字符串全部变大写MY NAME IS TONY!
复制代码

startswith() endswith():判断字符串以什么开头以什么结尾,结果是布尔值

>>> str3 = 'tony jam'# startswith()判断字符串是否以括号内指定的字符开头,结果为布尔值True或False>>> str3.startswith('t') True>>> str3.startswith('j')False# endswith()判断字符串是否以括号内指定的字符结尾,结果为布尔值True或False>>> str3.endswith('jam')True>>> str3.endswith('tony')  False
复制代码

join():从可迭代对象中取出多个元素,然后按照指定的连接符进行拼接,拼接的结果为字符串。

>>> '%'.join('hello') # 从字符串'hello'中取出多个字符,然后按照%作为连接符进行拼接'h%e%l%l%o'>>> '|'.join(['tony','18','read'])  # 从列表中取出多个字符,然后按照|作为连接符进行拼接'tony|18|read'
复制代码

replace()方法:用新的字符替换字符串中旧的字符,可以指定修改次数

>>> str7 = 'my name is tony, my age is 18!'  # 将tony的年龄由18岁改成73岁>>> str7 = str7.replace('18', '73')  # 语法:replace('旧内容', '新内容')>>> str7my name is tony, my age is 73!# 可以指定修改的个数>>> str7 = 'my name is tony, my age is 18!'>>> str7 = str7.replace('my', 'MY',1) # 只把一个my改为MY>>> str7'MY name is tony, my age is 18!'
复制代码

isdigit():判断字符串是否是纯数字组成,返回结果为True或False

>>> str8 = '5201314'>>> str8.isdigit()True>>> str8 = '123g123'>>> str8.isdigit()False
复制代码

center() ljust() rjust() zfill()

>>> name='tony'>>> name.center(30,'-')  # 总宽度为30,字符串居中显示,不够用-填充-------------tony------------->>> name.ljust(30,'*')  # 总宽度为30,字符串左对齐显示,不够用*填充tony**************************>>> name.rjust(30,'*')  # 总宽度为30,字符串右对齐显示,不够用*填充**************************tony>>> name.zfill(50)  # 总宽度为50,字符串右对齐显示,不够用0填充0000000000000000000000000000000000000000000000tony
复制代码

captalize(),swapcase(),title()

# captalize:首字母大写>>> message = 'hello everyone nice to meet you!'>>> message.capitalize()Hello everyone nice to meet you!  # swapcase:大小写翻转>>> message1 = 'Hi girl, I want make friends with you!'>>> message1.swapcase()  hI GIRL, i WANT MAKE FRIENDS WITH YOU!  # title:每个单词的首字母大写>>> msg = 'dear my friend i miss you very much'>>> msg.title()Dear My Friend I Miss You Very Much 
复制代码
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/114426
 
332 次点击