Python 基础——数据类型

Python 数据类型

数据类型,就是变量的类型,用于表示不同特征的变量,不同类型的数据类型。

不可变类型:int,float,str,bool,tuple
可变类型:list,dict,set

1 整型

进制转换

十进制转其它进制

bin(11)
0b1011
oct(11)
0o13
hex(11)
0xb

转十进制

int('0b1011',2)
int('0o13',8)
int('0xb',16)
长整形
在python2中(python3中没有长整形的概念):      
    >>> num=2L
    >>> type(num)
    <type 'long'>
复数
    >>> x=1-2j
    >>> x.real
    1.0
    >>> x.imag
    -2.0

2 浮点型

3 字符串

单行字符串:‘字符串’、“字符串”

多行字符串:
三引号(用于print中,或者是一个变量值)可以定义多行内容:
‘’‘多行字符串‘’’
“””多行字符串“””   

引号嵌套邻近配对,注意不能混用,比如:'字符串"

常用方法:

list1[0:3:1]  # 切片,取出list中的索引 0 到 2 的元素,1 为步长  
str1.split()  # 以指定字符分割,默认是空格
str1.split(':',1)  # 用 ’:’ 分割,只分割一次
split,rsplit  # 分割字符串以指定符号,从左边,从右边开始分割
str1.strip(‘ *:’)  # 去除指定的所有字符,两边的
lstrip,rstrip  # 去除空白,从左边,右边
lower,upper  # 字符串转换成全小写,全大写
startswith,endswith  # 判断字符串以什么开头,结尾
format  # 字符串格式化
join  # 将字符串插入指定字符
':'.join(str1)
str1.replace('a','A',1) # 替换, 将指定字符替换为其它字符
str1.isdigit() # 纯数字字符串,且是整型

其他方法:

str1.find.('e')  # 返回'e'的索引,返回-1,找不到
str1.index('e')  # 返回索引,报错,找不到
str1.count('e')  # 返回数量
str1.center(10,'*')
ljust,rjust  # 一共10位不够用符号填充,str1在中左右
str1.zfill(10)  # 10位,用0填充
str1.expandtabs(2)  # 设置制表符为 2 位
captalize  # 字符串首字母大写
swapcase  # 大小写反转
title  # 每个单词首字母大写
isupper,islower  # 判断是否全大写,全小写
istitle  # 是否每个单词首字母大写
isalnum  # 是否由字母和数字组成
isalpha  # 纯字母
isspace  # 纯空格组成
isidentifier  #定义的名称是否合法
处理输入的一顿操作:

1)strip()
2)Isdigit()
3)Int()

关于判断字符串是否是数字:

b'1'  bytes  python2中字符串类型的格式,
u'1'  Unicode 也就是python3中的普通字符串格式
'一'  中文数字
'Ⅰ'  罗马数字

前提是,纯数字字符串

isdigit     只能判断阿拉伯数字(bytes 和 unicode 都可以)
isnumeric  bytes没有这个方法,可以识别阿拉伯数字(unicode)、汉字数字、罗马数字
isdecimal  只可以识别阿拉伯数字(unicode)

4 列表

list 列表:a = [1,2,"3"]

取值:
从 0 开始,索引取值

设值:
a[0] = 1
a[1] = 2

反向取值,最后一个元素索引为 -1,倒数第二个 -2
a[-1] = "3"

强制转换,能够被for循环遍历的类型:字符串、列表、字典、元组、集合
list('str1')
底部就是遍历这个类型,添加到列表中

常用方法:

list1.append('*')  # 追加元素:"*"
list1.insert(1,'*')  #插入元素:"*"

# 删除元素,如果删除的元素,不存在列表或者索引越界了,报错
del  # 通用,没有返回值
l.pop()  # 删除最后一个值,返回被删除的值
l.pop(0)  # 删除 索引0 的值,返回被删除的值
l.remove('egon')  # 删除具体的元素,返回值为None

# 切片,和字符串一样有切片方法,完全切片为浅拷贝

l.count('a')  # 统计'a'个数
index_a = l.index('1')  # 查找元素索引
l.clear()  # 清空列表
l.reverse()  # 将列表反转,不是排序
l.sort()  # 排序
# key:是排序依据,通常是 匿名函数:lambda 。reverse 默认是升序 False,从小到大
l.sort(key,reverse = False)  
l.sort(reverse = True)  # 降序,从大到小

# 字符之间比大小
比如,'abc' 跟 'z' 比较,先比较第一个字母,大小,即决定了结果,如果第一个相同,就比较第二个,最后,先迭代了全部元素的小,大小根据ASCII码表。

# 一个列表元素添加到另外一个列表中
[] + []
a.extend(b)  # b 也是一个可迭代对象

5 字典

字典: a = {'name':'wl','age':24,}
key是不可变类型,value是可变类型
{key : value}
key 键;value 值;

取值:a['name']
设值:a['name'] = 'wl'  # 有则索引,没有则创建

定义一个字典:

dic = {}
dic = dict(x = 1,y = 2,z =3)
# 强制转换(定义字典):
list1 = [[1,2],(1,2)]  # 迭代取出的值必须是两个
dict(list1)

# 初始化字典:
keys = ['name','age','gender']
{}.fromkeys(keys,None)

常用方法:

# 删除元素
del
d.pop('a')  # 指定元素删除
d.popitem()  # 随机删除,返回键值对元组

d.clear()  # 清空字典
d.updata(dict1)  # 更新列表,将dict1中的元素,更新到d中,如果key重复的就更新替换
d.setdefault('k1',222)  # k1存在就不改,不存在的话创建,返回key对应的值

d.get('k1','不存在')  # 返回None,或者指定参数
dict1.get(key)  # 不存在 返回None
dict1.get(key,"自定义的默认值”)

keys, values, items

for k in dict1.keys():  # 键
  print(k)
for k in dict1:  # 默认取出的是 keys()
  print(k)
for in dict1.values():  # 值
  print(k)
for k,i in dict1.items():  # 键值对
  print(k,i)
  
# Python2
dict1.keys() key 的列表
dict1.values() value 的列表
dict1.items()  键值对 的列表
# python3 是迭代器
In [8]: a = {'a':3,'b':3,'c':3}

In [9]: a.pop()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-9-9c070c907602> in <module>
----> 1 a.pop()

TypeError: pop expected at least 1 arguments, got 0

In [10]: a.pop('a')
Out[10]: 3
    
In [11]: a
Out[11]: {'b': 3, 'c': 3}
    
In [12]: a.popitem()
Out[12]: ('c', 3)
    
In [13]: a.clear()

In [14]: a
Out[14]: {}

6 布尔类型

只有两个值:True 和 False,表示真或假。

显式布尔值, 1 > 0 ,True,False
隐式布尔值, 非零即正

7 元组

1 不可变的列表
不可变是指,元组内存储的每个索引的内存地址,不可变。
2 作为数据记录

定义元组:
a = ()
a = tuple()
In [1]: a = ([1,2,3],)

In [2]: a
Out[2]: ([1, 2, 3],)  # 可行

In [3]: d = {a:1}  # 但是,作为字典的键,不可哈希
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-e0429fdfbf1d> in <module>
----> 1 d = {a:1}

TypeError: unhashable type: 'list'

8 集合

定义:
set1 = set()
集合:无序,元素不重复,元素为不可变类型

去重:只能针对不可变类型,不能保证顺序

常用方法:

# 关系运算

与:a & b
或:a | b
差集:a - b
对称差集:a ^ b
包含关系:a < b

# 删除元素
s.discard(0)  # 具体的元素是啥,不存在do nothing
s.remove(1)  # 具体的元素是啥,不存在,报错
s.update({1,})  # 更新
s.pop()
s.add(5)  # 添加元素
In [15]: a = {1,2,3}

In [16]: a.discard(0)

In [17]: a
Out[17]: {1, 2, 3}

In [18]: a.discard(1)

In [19]: a
Out[19]: {2, 3}

In [20]: a.remove(0)
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-20-ae1fd24e9d23> in <module>
----> 1 a.remove(0)

KeyError: 0

In [21]: a.remove(2)

In [22]: a.pop()
Out[22]: 3

In [23]: a
Out[23]: set()

In [24]: a = {1,2,3}

In [26]: a = {'1','2','3'}

In [27]: a.pop('2')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-27-9daa2d8bf7b7> in <module>
----> 1 a.pop('2')

TypeError: pop() takes no arguments (1 given)

In [28]: a
Out[28]: {'1', '2', '3'}

In [29]: a.add(5)

In [30]: a
Out[30]: {'1', '2', '3', 5}
集合(博客):https://www.cnblogs.com/liuxu2019/p/11173986.html
上一篇:C++基础学习之stack、queue容器详解


下一篇:剑指 Offer 09. 用两个栈实现队列