3.Python编程之数据类型

原文文档

  • 类型的概念

  • Python语言的类型

      数字类型,字符串类型,元组类型
      列表类型,文件类型,字典类型
    

3.1 数字和字符串类型

数字类型

  • 程序元素:010/10,存在多种可能
    • 表示十进制数值10
    • 类似人名一样的字符串
  • 数字类型对Python语言中数字的表示和使用进行了定义和规范

3.1.1Python包括三种数字类型

  • 整形类型
  • 浮点数类型
  • 复数类型

1.整数类型

  • 与数学上的整数概念一致,没有范围限制

  • pow(x,y)函数:计算 x^y

    程序1:pow(2,10)=1024,pow(1,15)=32768
    程序2:pow(2,1000)
    程序3:pow(2,pow(2,15))

  • 示例

    • 1010,99,-217
    • 0x9a,-0X89 (0x,0X开头表示16进制)
    • 0b010,-0B101 (0b,0B开头表示2进制数)
    • 0o123, -0O456 (0o,0O开头表示8进制数)

2.浮点数类型

  • 示例
    • 0.0, -77, -2.17
    • 96e4, 4.3e-3, 9.6E5
    • 科学计数法使用字母“e”或者“E”作为幂的符号,以10为基数
    • 科学计数法含义如:<a>e<b> = $a*10^b$

3.复数类型

  • 与数学中的复数概念一致,z = a+bj,a是实数部分,b是虚数部分,a和b都是浮点数类型,虚数部分用j或者J标识
  • 示例:12.3+4j, -5.6+7J
  • Z=1.23e-4 + 5.6e + 89j
    -对于复数z,可用z.real获取实数部分,z.imag获取虚数部分

3.1.2 数字类型的关系

  • 三种类型存在一种逐渐“扩展”的关系:

    • 整数->浮点数->复数(整数是浮点数特例,浮点数是复数特例 )
  • 不同数字类型之间可以混合运算,运算结果为最宽类型

    • 示例:123 + 4.0 = 127.0(整数 + 浮点数 = 浮点数)
  • 三种类型可以相互转换

    • 函数:int(), float(), complex()

    • 示例:

        int(4.5) = 4(直接去掉小数部分)
        float(4) = 4.0(增加小数部分)
        complex(4.5) = 4.5 + 0j
        >>>float(4.5+0j)将会报错,不支持将复数转化为浮点数或者整数,只能将复数的实部或者虚部转化为floath/int
      
        In [1]:x = 2.5+1j
        In [2]:int(x.real)
        Out[2]: 2
        In [3]:float(x.imag)
        Out[3]: 1.0
      

3.1.3 数据类型的判断

  • 函数:type(x) 返回x的类型,适合于所有类型的判断
  • 示例:type(4.5)
    • 返回:float

3.1.4数子类型的运算

数字类型的运算

3.2字符串数据类型

  • 字符串是用双引号 " "或者单引号 ' '括起来的一个或多个字符

      >>>str1 = "hello"
      >>>str2 = 'Jason'
    
  • 字符串可以保存在变量里也可以单独存在

  • 可以用type()函数测试一个字符串的类型

      >>>type(str1)
      <class 'str'>
    
  • Python语言转义符:\

  • 输出带有引号的字符串,可以使用转义符

      >>>print("\"大家好!\"")
      "大家好!"
    
  • 使用\可以输出带有转义符的字符串

  • 字符串是一个字符序列:字符串最左端位置标记为0,依次增加。字符串中的编号叫做“索引”

H e l l o J o h n
0 1 2 3 4 5 6 7 8 9
  • 单个索引辅助访问字符串中的特定位置

      <string>[<索引>]
      >>>greet ="Hello John"
      >>>print(greet[2])
      1
      >>>x=8
      >>>print(greet[x-2])
      J
    
  • Python中字符串索引从零开始,一个长度为L的字符串最后一个字符串的位置是L-1

  • Python同时允许使用负数从字符串右边尾部向左边反向索引,最右侧索引值为-1

      >>>greet[-4]
      J
    
  • 此外,也可以通过两个索引值确定一个位置范围内,返回这个范围的子串

      <string>[<start>:<end>]
    
  • start和end都是整数型数值,这个子序列从索引start开始直到索引end结束,但不包括end位置

      >>>greet[0:3]
      'Hel'
    
  • 字符串之间可以通过 + 或 * 进行连接

    • 加法操作(+)将两个字符串连接成为一个新的字符串

        >>>"pine" +"apple"
        "pineapple"
      
    • 乘法操作(*)构建一个其本身字符串重复连接而成的字符串

        >>>3*"pine"
        'pinepinepine'
      
  • len()函数能否返回一个字符串长度

      >>>len('pine')
      4
      >>>len("我爱FF猪")
      5
    
  • 大多数数据都可以通过str()函数转换为字符串

      >>>str(123)
      '123'
      >>>str(123.456)
      '123.456'
      >>>str(123e+10)
       '1230000000000.0'
    
  • 字符串操作

操作 含义
+ 连接 * 重复
<string>[ ] 索引
<string>[ : ] 剪切
len(<string>) 长度
<string>.upper() 字符串中字母大写
<string>.lower() 字符串中字母小写
<string>.strip() 去两边空格及去指定字符
<string>.split() 按指定字符分割字符串为数组
<string>.join() 连接两个字符串序列
<string>.find() 搜索指定字符串
<string>.replace() 字符串替换
for <var> in <string> 字符串迭代
  • 可以通过 for 和 in 组成的循环来遍历字符串中
    每个字符

    • 格式如下:

        for <var> in <string>:
            操作
      
  • 用转义符可以在字符串中表达一些不可直接打印的信息

    例如:用\n表示换行

      - 字符串"Hello\nWorld\n\nGoodbye 32\n"
      - 用print()函数打印后的输出效果如下:
      Hello
      World         
      Goodbye 32
    

3.3 元组及列表

元组的概念

 元组是包含多个元素的类型,元素之间用逗号分割。
例如:t1 = 123,456, “hello”
 元组可以是空的,t2=()
 元组包含一个元素时:t3=123,
 元组外侧可以使用括号,也可以不使用
 与字符串类型类似,可以通过索引区间来访问元组中部分元素。
例如:t[1:]
 与字符串一样,元组之间可以使用+号和*号进行运算。

元组的特点

 元组中元素可以是不同类型;
一个元组也可以作为另一个元组的元素,此时,作为元
素的元组需要增加括号,从而避免歧义。
例如:t3='123','456',('中国,我爱你')
 元组中各元素存在先后关系,可以通过索引访问元组
中元素。
例如:t3[0]
 元组定义后不能更改,也不能删除。
例如:t3[0]=456

元组总结

 Python语言中的元组类型定义后不能修改
 不可变的tuple有什么意义呢?
因为tuple不可变,所以代码更安全。
 如果仅考虑代码的灵活性,也可以用列表类型代替元组类型。

列表的概念

 基本概念
     列表(list)是有序的元素集合;
     列表元素可以通过索引访问单个元素;
 列表与元组类似
     列表中每个元素类型可以不一样
     访问列表中元素时采用索引形式
列表与元组不同
    列表大小没有限制,可以随时修改

列表的操作

 针对列表有一些基本操作,这些操作与字符串操作类似
列表操作符 操作符含义
< list1 > + < list2> 连接两个列表
< list > * < 整数类型 > 对列表进行整数次重复
< list > [< 整数类型 >] 索引列表中的元素
len( < seq > ) 列表中元素个数
< list >[ < 整数类型 > : < 整数类型 >] 取列表的一个子序列
for < var > in < list > : 对列表进行循环列举
< expr > in < list > 成员检查,判断<expr>是否在列表中

示例:

l = [1,2,3,"hello",9]
l
Out[35]:
[1, 2, 3, 'hello', 9]
l2 = [4,5,6,'world',9]
l2
Out[36]:
[4, 5, 6, 'world', 9]
l +l2
Out[40]:
[1, 2, 3, 'hello', 9, 4, 5, 6, 'world', 9]

l[3]+ " "+ l2[3]
Out[42]:
'hello world'
#%%    
l3=[]
l4=[]
for i in l:
    if type(i) is str:
        l3.append(i)
    else:
        l4.append(i)
l3
['hello']
l4
[1,2,3,9]

 列表相关方法
方法 方法含义
< list > . append ( x ) 将元素x增加到列表的最后
< list > . sort ( ) 将列表元素排序
< list > . reverse ( ) 将序列元素反转
< list > . index ( ) 返回第一次出现元素x的索引值
< list > . insert ( i, x ) 在位置i处插入新元素x
< list > . count ( x ) 返回元素x在列表中的数量
< list > . remove ( x ) 删除列表中第一次出现的元素x
< list > . pop ( i ) 取出列表中位置i的元素,并删除它

示例

l5 = [1,2,3,8,5]
l5.append(10)
l5
Out[ ]:
[1,2,3,8,5,10]
l5.sort()
l5
Out[ ]:
[1,2,3,5,8,10]
l5.reverse()
l5
Out[ ]:
[10,8,5,3,2,1]
l5.insert(3,2)
l5
Out[ ]:
[10,8,5,2,3,2,1]

 对于字符串,可以通过split()函数,将字符串拆分成一个列表,默认以空格分割

 例如:

str1= 'I love bai yun fan fan'
str1.split()
Out[ ]:
['I', 'love', 'bai', 'yun', 'fan', 'fan']

3.4 math库 and random库

数学库及其使用

3.4.1.math库

 math库中常用的数学函数
函数 数学表示 含义
圆周率pi π π的近似值,15位小数
自然常数e e e的近似值,15位小数
ceil(x) $[x]$ ٔ对浮点数向上取整
floor(x) $[x]$ ٔ对浮点数向下取整
pow(x,y) $x^y$ 计算x的y次方
log(x) lg x 以e为基的对数,
log10(x) $log_{10}x$ 以10为基的对数,
sqrt(x) $\sqrt{x}$ 平方根
 math库中常用的数学函数
函数 数学表示 含义
exp(x) e的x次幂,
degrees(x) 将弧度值转换成角度
radians(x) 将角度值转换成弧度
sin(x) sin x 正弦函数
cos(x) cos x 余弦函数
tan(x) tan x 正切函数
asin(x) arcsin x 反正弦函数,x∊[-1.0,1.0]
acos(x) arccos x 反余弦函数,x∊[-1.0,1.0]
atan(x) arctan x 反正切函数,x∊[-1.0,1.0]

随机数库及其使用

 random库中常用的函数
函数 含义
seed(x) 给随机数一个种子值,默认随机种子是系统时钟
random() 生成一个[0,1.0]之间的随机小数
randint(a,b) 生成一个a到b之间的随机整数
randform(a,b) 生成一个a到b之间的随机小数
randrange(a,b,c) 随机生成一个从a开始到b以c递增的数
choice(<list>) 从列表中随机返回一个元素
shuffle(<list>) 将列表中元素随机打乱
sample(<list>,k) 从指定列表随机获取k个元素
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容