码迷,mamicode.com
首页 > 编程语言 > 详细

python-->基本数据类型

时间:2019-01-05 00:17:23      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:lex   LLC   tab   alt   换行符   upper   划线   条件   浮点   

Python Number(数字)

数字数据类型用于存储数值,它们是不可变数据类型。这意味着,更改数字数据类型的值会导致新分配对象。当为数字数据类型分配值时,Python将创建数字对象

Python 数字类型

  • int(有符号整数) - 它们通常被称为整数或整数。它们是没有小数点的正或负整数。
  • float(浮点实数值) - 也称为浮点数,它们表示实数,并用小数点写整数和小数部分。 浮点数也可以是科学符号,E或e表示10的幂 -
  • complex(复数) - 复数是以a + bJ的形式,其中a和b是浮点,J(或j)表示-1的平方根(虚数)。数字的实部是a,虚部是b。复数在Python编程中并没有太多用处

Python 数字类型转换

Python可将包含混合类型的表达式内部的数字转换成用于评估求值的常用类型。 有时需要从一个类型到另一个类型执行明确数字转换,以满足运算符或函数参数的要求。

  • int(x)将x转换为纯整数。
  • float(x)将x转换为浮点数。
  • complex(x, y)将x和y转换为具有实部为x和虚部为y的复数。x和y是数字表达式
技术分享图片
print(type(int(1.6)))
print(type(int(‘6‘)))
print(type(float(1)))
print(type(float(‘1.6‘)))
---------------------------------------------
<class ‘int‘>
<class ‘int‘>
<class ‘float‘>
<class ‘float‘>
数字类型转换

Python 数字进制转换

↓

2进制

8进制

10进制

16进制

2进制

-

bin(int(x, 8))

bin(int(x, 10))

bin(int(x, 16))

8进制

oct(int(x, 2))

-

oct(int(x, 10))

oct(int(x, 16))

10进制

int(x, 2)

int(x, 8)

-

int(x, 16)

16进制

hex(int(x, 2))

hex(int(x, 8))

hex(int(x, 10))

-

 

Python 字符串

字符串是 Python 中最常用的数据类型。我们可以使用引号( ‘ 或 " )来创建字符串。

Ps:python中字符串是不可变对象,所以所有修改和生成字符串的操作的实现方法都是另一个内存片段中新生成一个字符串对象

 大小写转换(lower、upper)

>>> print(‘ab XY‘.lower())
ab xy
>>> print(‘ab XY‘.upper())
AB XY

 

title、capitalize

 

ps:前者返回S字符串中所有单词首字母大写且其他字母小写的格式,后者返回首字母大写、其他字母全部小写的新字符串

 

>>> print(‘ab XY‘.title())
Ab Xy
>>> print(‘abc DE‘.capitalize())
Abc de

 

 swapcase

ps:swapcase()对S中的所有字符串做大小写转换(大写-->小写,小写-->大写)

>>> print(‘abc XYZ‘.swapcase())
ABC xyz

 isalpha,isdecimal,isdigit,isnumeric,isalnum

ps:测试字符串S是否是数字、字母、字母或数字。对于非Unicode字符串,前3个方法是等价的

>>> print(‘34‘.isdigit())
True
>>> print(‘abc‘.isalpha())
True
>>> print(‘a34‘.isalnum())
True

  islower,isupper,istitle

ps:判断是否小写、大写、首字母大写。要求S中至少要包含一个字符串字符,否则直接返回False。例如不能是纯数字。istitle()判断时会对每个单词的首字母边界判断

>>> print(‘a34‘.islower())
True
>>> print(‘AB‘.isupper())
True
>>> print(‘Aa‘.isupper())
False
>>> print(‘Aa Bc‘.istitle())
True
>>> print(‘Aa_Bc‘.istitle())
True
>>> print(‘Aa bc‘.istitle())
False
>>> print(‘Aa_bc‘.istitle())
False
# 下面的返回False,因为非首字母C不是小写
>>> print(‘Aa BC‘.istitle())
False

  isspace,isprintable,isidentifier

ps:分别判断字符串是否是空白(空格、制表符、换行符等)字符、是否是可打印字符(例如制表符、换行符就不是可打印字符,但空格是)、是否满足标识符定义规则

 

>>> print(‘ ‘.isspace())
True
>>> print(‘ \t‘.isspace())
True
>>> print(‘\n‘.isspace())
True
>>> print(‘‘.isspace())
False
>>> print(‘Aa BC‘.isspace())
False

 

 isprintable

ps:判断是否是可打印字符

>>> print(‘\n‘.isprintable())
False
>>> print(‘\t‘.isprintable())
False
>>> print(‘acd‘.isprintable())
True
>>> print(‘ ‘.isprintable())
True
>>> print(‘‘.isprintable())
True

 isidentifier

ps:判断是否满足标识符定义规则。标识符定义规则为:只能是字母或下划线开头、不能包含除数字、字母和下划线以外的任意字符

 

>>> print(‘abc‘.isidentifier())
True
>>> print(‘2abc‘.isidentifier())
False
>>> print(‘abc2‘.isidentifier())
True
>>> print(‘_abc2‘.isidentifier())
True
>>> print(‘_abc_2‘.isidentifier())
True
>>> print(‘_Abc_2‘.isidentifier())
True
>>> print(‘Abc_2‘.isidentifier())
True

center

ps:S.center(width[, fillchar])将字符串居中,左右两边使用fillchar进行填充,使得整个字符串的长度为width。fillchar默认为空格。如果width小于字符串的长度,则无法填充直接返回字符串本身(不会创建新字符串对象)

 

>>> print(‘ab‘.center(4,‘_‘))
_ab_
>>> print(‘ab‘.center(5,‘_‘))
__ab_

*使用默认的空格填充并居中字符串
>>> print(‘ab‘.center(4))
 ab 
>>> print(len(‘ab‘.center(4)))
4
*width小于字符串长度
>>> print(‘abcde‘.center(3))
abcde

 

  ljust和rjust

ps:ljust()使用fillchar填充在字符串S的右边,使得整体长度为width。rjust()则是填充在左边。如果不指定fillchar,则默认使用空格填充,如果width小于或等于字符串S的长度,则无法填充,直接返回字符串S(不会创建新字符串对象)

 

>>> print(‘xyz‘.ljust(5,‘_‘))
xyz__
>>> print(‘xyz‘.rjust(5,‘_‘))
__xyz

 

 zfill

ps:用0填充在字符串S的左边使其长度为width。如果S前右正负号+/-,则0填充在这两个符号的后面,且符号也算入长度。如果width小于或等于S的长度,则无法填充,直接返回S本身(不会创建新字符串对象)

 

技术分享图片
>>> print(‘abc‘.zfill(5))
00abc
 
>>> print(‘-abc‘.zfill(5))
-0abc
 
>>> print(‘+abc‘.zfill(5))
+0abc
 
>>> print(‘42‘.zfill(5))
00042
 
>>> print(‘-42‘.zfill(5))
-0042
 
>>> print(‘+42‘.zfill(5))
+0042
View Code

 

 count

ps:

S.count(sub[, start[, end]])返回字符串S中子串sub出现的次数,可以指定从哪里开始计算(start)以及计算到哪里结束(end),索引从0开始计算,不包括end边界。

 

技术分享图片
>>> print(‘xyabxyxy‘.count(‘xy‘))
3
 
# 次数2,因为从index=1算起,即从‘y‘开始查找,查找的范围为‘yabxyxy‘
>>> print(‘xyabxyxy‘.count(‘xy‘,1))
2
 
# 次数1,因为不包括end,所以查找的范围为‘yabxyx‘
>>> print(‘xyabxyxy‘.count(‘xy‘,1,7))
1
 
# 次数2,因为查找的范围为‘yabxyxy‘
>>> print(‘xyabxyxy‘.count(‘xy‘,1,8))
2
View Code

 

endswith和startswith

ps:

S.endswith(suffix[, start[, end]])与S.startswith(prefix[, start[, end]]),endswith()检查字符串S是否已suffix结尾,返回布尔值的True和False。suffix可以是一个元组(tuple)。可以指定起始start和结尾end的搜索边界。同理startswith()用来判断字符串S是否是以prefix开头。

 

技术分享图片
*suffix是普通的字符串时
>>> print(‘abcxyz‘.endswith(‘xyz‘))
True
 
# False,因为搜索范围为‘yz‘
>>> print(‘abcxyz‘.endswith(‘xyz‘,4))
False
 
# False,因为搜索范围为‘abcxy‘
>>> print(‘abcxyz‘.endswith(‘xyz‘,0,5))
False
>>> print(‘abcxyz‘.endswith(‘xyz‘,0,6))
True

*suffix是元组(tuple)时,只要tuple中任意一个元素满足endswith的条件,就返回True。
>>> print(‘abcxyz‘.endswith((‘ab‘,‘xyz‘)))
True
 
# tuple中‘ab‘和‘xy‘都不满足条件
>>> print(‘abcxyz‘.endswith((‘ab‘,‘xy‘)))
False
 
# tuple中的‘z‘满足条件
>>> print(‘abcxyz‘.endswith((‘ab‘,‘xy‘,‘z‘)))
True
View Code

 

find,rfind和index,rindex

ps:S.find(sub[, start[, end]])、S.rfind(sub[, start[, end]])?、S.index(sub[, start[, end]])、S.rindex(sub[, start[, end]]),find()搜索字符串S中是否包含子串sub,如果包含,则返回sub的索引位置,否则返回"-1"。可以指定起始start和结束end的搜索位置。index()和find()一样,唯一不同点在于当找不到子串时,抛出ValueError错误。rfind()则是返回搜索到的最右边子串的位置,如果只搜索到一个或没有搜索到子串,则和find()是等价的。同理rindex()。

 

技术分享图片
>>> print(‘abcxyzXY‘.find(‘xy‘))
3
>>> print(‘abcxyzXY‘.find(‘Xy‘))
-1
>>> print(‘abcxyzXY‘.find(‘xy‘,4))
-1
 
>>> print(‘xyzabcabc‘.find(‘bc‘))
4
>>> print(‘xyzabcabc‘.rfind(‘bc‘))
7
View Code

 

in

ps:使用in操作符来判断字符串S是否包含子串sub,它返回的不是索引位置,而是布尔值

技术分享图片
>>> ‘xy‘ in ‘abxycd‘
True
>>> ‘xyz‘ in ‘abxycd‘
False
View Code

replace

ps:S.replace(old, new[, count]),将字符串中的子串old替换为new字符串,如果给定count,则表示只替换前count个old子串。如果S中搜索不到子串old,则无法替换,直接返回字符串S(不创建新字符串对象)。

 

技术分享图片
>>> print(‘abcxyzoxy‘.replace(‘xy‘,‘XY‘))
abcXYzoXY
>>> print(‘abcxyzoxy‘.replace(‘xy‘,‘XY‘,1))
abcXYzoxy
>>> print(‘abcxyzoxy‘.replace(‘mn‘,‘XY‘,1))
abcxyzoxy
View Code

 

split、rsplit和splitlines

ps:S.split(sep=None, maxsplit=-1)、S.rsplit(sep=None, maxsplit=-1)、S.splitlines([keepends=True]),都是用来分割字符串,并生成一个列表。split()根据sep对S进行分割,maxsplit用于指定分割次数,如果不指定maxsplit或者给定值为"-1",则会从做向右搜索并且每遇到sep一次就分割直到搜索完字符串。如果不指定sep或者指定为None,则改变分割算法:以空格为分隔符,且将连续的空白压缩为一个空格。rsplit()和split()是一样的,只不过是从右边向左边搜索。splitlines()用来专门用来分割换行符。虽然它有点像split(‘\n‘)或split(‘\r\n‘),但它们有些区别,见下文解释。

 

技术分享图片
>>> ‘1,2,3‘.split(‘,‘)
[‘1‘, ‘2‘, ‘3‘]
 
>>> ‘1,2,3‘.split(‘,‘,1)
[‘1‘, ‘2,3‘]  # 只分割了一次
 
>>> ‘1,2,,3‘.split(‘,‘)
[‘1‘, ‘2‘, ‘‘, ‘3‘] # 不会压缩连续的分隔符
 
>>> ‘<hello><><world>‘.split(‘<‘)
[‘‘, ‘hello>‘, ‘>‘, ‘world>‘]
 
# sep为多个字符时
>>> ‘<hello><><world>‘.split(‘<>‘)
[‘<hello>‘, ‘<world>‘]
 
# 不指定sep时
>>> ‘1 2 3‘.split()
[‘1‘, ‘2‘, ‘3‘]
 
>>> ‘1 2 3‘.split(maxsplit=1)
[‘1‘, ‘2 3‘]
 
>>> ‘  1  2  3  ‘.split()
[‘1‘, ‘2‘, ‘3‘]
 
>>> ‘  1  2  3 \n‘.split()
[‘1‘, ‘2‘, ‘3‘]
 
# 显式指定sep为空格、制表符、换行符时
>>> ‘ 1 2 3 \n‘.split(‘ ‘)
[‘‘, ‘1‘, ‘‘, ‘2‘, ‘‘, ‘3‘, ‘‘, ‘\n‘]
 
>>> ‘ 1 2 3 \n‘.split(‘\t‘)
[‘ 1 2 3 \n‘]
 
>>> ‘ 1 2\n3 \n‘.split(‘\n‘)
[‘ 1 2‘, ‘3 ‘, ‘‘] # 注意列表的最后一项‘‘
 
>>> ‘‘.split(‘\n‘)
[‘‘]
View Code

 

splitlines

ps:splitlines()中可以指定各种换行符,常见的是\n、\r、\r\n。如果指定keepends为True,则保留所有的换行符

技术分享图片
>>> ‘ab c\n\nde fg\rkl\r\n‘.splitlines()
[‘ab c‘, ‘‘, ‘de fg‘, ‘kl‘]
 
>>> ‘ab c\n\nde fg\rkl\r\n‘.splitlines(keepends=True)
[‘ab c\n‘, ‘\n‘, ‘de fg\r‘, ‘kl\r\n‘]

*将split()和splitlines()相比较一下
>> ‘‘.split(‘\n‘)
[‘‘]      # 因为没换行符可分割
 
>>> ‘One line\n‘.split(‘\n‘)
[‘One line‘, ‘‘]
 
#### splitlines()
>>> "".splitlines()
[]       # 因为没有换行符可分割
 
>>> ‘Two lines\n‘.splitlines()
[‘Two lines‘]
View Code

join

ps:S.join(iterable)将可迭代对象(iterable)中的字符串使用S连接起来。注意,iterable中必须全部是字符串类型,否则报错。

 

技术分享图片
>>> L=‘python‘
>>> ‘_‘.join(L)
‘p_y_t_h_o_n‘
View Code

 

 

 

 

 

 

 

 

python-->基本数据类型

标签:lex   LLC   tab   alt   换行符   upper   划线   条件   浮点   

原文地址:https://www.cnblogs.com/dragon-123/p/10223017.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!