python数据基本类型

python基本数据类型

1.int--数字类型:整数.主要用来进行数学计算

2.bool--布尔类型:判断真假

3.str--字符串类型:可以保存少量数据并进行相应的操作

4.list--列表:存储大量数据用[]表示

5.tuple--元组:不可以发生改变用()表示

6.dict--字典:保存键值对,一样可以保存大量数据

 7.set--集合:保存大量数据.不可以重复.其实就是不保存value的dict

 

    str是类,int是类,dict、list、tuple等等都是类,但是str却不能直接使用,因为它是抽象的表示了字符串这一类事物,并不能满足表示某个特定字符串的需求,我们必须要str1 = ''初始化一个对象,这时的str1具有str的属性,可以使用str中的方法。

  类为我们创建对象,提供功能,在python中,一切事物都是对象!

  type(对象名):可以看到属于哪一个类

print(type(a))  
#<class 'int'>

 

  dir(类名):展示类下的所有方法

print(dir(int))

['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__'
, '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__',
'__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__',
'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']

 

 

 

 一.int

 1. 在python3中所有的数据都是整型,但在python2中如果数据量比较大,会使用long类型,但在python3中不存在在long类型

 2. python可以进行   加+  减-   乘*  除/    运算,

  幂:2得3次幂可以表示:2**3   或者    pow(2,3)

  绝对值:abs()

print(pow(2,3))   #8
print(2**3)       #8
print(abs(-2))    #2
print(10%3)       #1
print(10//3)      #3
print(10/3)       #3.3333333333333335

 

 3.方法:

  (1) __cmp__:比较两个数的大小

>>> a = 12
>>> b = 15
>>> cmp(a,b)         #比较两个参数的值,如果第一个参数小于第二个参数,返回-1
-1
>>> cmp(b,a)         #比较两个参数的值,如果第一个参数大于第二个参数,返回1
1
>>> c = 12    
>>> a.__cmp__(c)     #比较两个参数的值,如果第一个参数大于第二个参数,返回0   
0                    #cmp方法也有两种调用方式

  (2)__neg__/__abs__:取相反数/取绝对值

>>> a = 12
>>> b = 15
>>> cmp(a,b)         #比较两个参数的值,如果第一个参数小于第二个参数,返回-1
-1
>>> cmp(b,a)         #比较两个参数的值,如果第一个参数大于第二个参数,返回1
1
>>> c = 12    
>>> a.__cmp__(c)     #比较两个参数的值,如果第一个参数大于第二个参数,返回0   
0                    #cmp方法也有两种调用方式

 

  (3)__divmod__:返回两个数相除的商和余数组成的元组(商,余数)

1 >>> a = 102
2 >>> b = 10
3 >>> a.__divmod__(b)
4 (10, 2)

 

  (4)__repr__/__str__:转化为解释器可读取的形式/转换为人阅读的形式

  (5)bit_length()表示一个数的二进制长度

a=10
print(a.bit_length())
# 8421大法1010

 

二.bool

所有非空的是True,空的都是False :表示False   0, "", [], tuple(), {}, None

a = 0 
print(bool(a))
# False

s = "" print(bool(s)) # 空字符串是false

lst = [1] print(bool(lst)) # 空列表是False dic = {'jj':'林俊杰'} print(bool(dic)) # 空字典是False a = None print(bool(a)) # 表示空. 真空.

 

数据类型转换:想把某数据转化成XXX:语法:XXX(数据)

1.str => int
int(s)  #str里只能是数字才能进行转换
2.int => str
str(i)
3.lst => tuple
tuple(lst)
4.tuple => list
list(tu)

 

 

 

三.str

   把字符连成串,在python中用'  '," ","""   """,'''   ''',引起来的内容称为字符串

1.切片和索引

  (1)索引

# 索引从零开始

s='你好世界 hello world'
print(s[0])
print(s[2])
print(s[4])
print(s[6])
#
#
# 
# e

#
# s='你好世界 hello world'
# print(s[20])
#超出边界报错

#索引-1是最后一个 
s='你好世界 hello world'
print(s[-1])
# d

 

  (2)切片 :[起始位置: 结束位置] 1.顾头不顾尾, 2.从左往右切

# 切片
s='今天是个好日子,今天天上的月亮圆又园'
# 切得下标是1,2 顾头不顾尾
print(s[1:3])
# 天是

# 全切
print(s[:])
# 今天是个好日子,今天天上的月亮圆又园


# 从头切到2
print(s[:3])
# 今天是

# 从2切到尾
print(s[2:])
# 是个好日子,今天天上的月亮圆又园

# 切出下标是1到5的元素,每隔两个切一个
print(s[1:6:2])
# 天个日

# 最后一位是-1,从左往右切
print(s[-3:-1])
# 圆又

# 步长取负的,索引也是负的,从左往右切
print(s[-1:-6:-2])
# 园圆月

#注意 print(s[-1:-6:2]) #不输出 print(s[1:6:-2]) #不输出

 

2.字符串的相关操作

切记:字符串是不可变的对象,所以任何操作对元字符串是不会有任何影响的

  2.1大小写转来转去

  2.2 切来切去

  2.3格式化输出

  2.4查找

  2.5条件判断

  2.6计算字符串的长度

  2.7迭代

 

 

2.1大小写转来转去

(1)首字母变成大写

s="hello world"
s.capitalize()
print(s)
#hello world
输出发现并没有发生任何变化,因为字符串本身是不会发生改变的,需要我们重新获取
ret=s.capitalize()
print(ret)
#Hello world

 

(2)全部大写全部小写

s="Hello World"
print(s.upper())
# HELLO WORLD
print(s.lower())
# hello world
print(s.swapcase())
# hELLO wORLD

 

实际应用:校验用户名输入的验证码是否合法

verify_code="abDe"
print(verify_code)
user_verify_code=input('请输入验证码')
# 全部转化成大写
if user_verify_code.upper()==verify_code.upper():
    print('验证成功')
else:
    print('验证失败')

# abDe
# 请输入验证码abde
# 验证成功

 

2.2切来切去

(1)每个被特殊字符隔开的字母首字母大写

s='today is_middle*autumn吃food'
print(s.title())

# Today Is_Middle*Autumn吃Food

 

 (2)定字符串长度,居中/居左/居右

str1='hello world'
ret=str1.ljust(20,'8')        #设置格式左对齐,其余部分默认情况下,以空格填充
print(ret)
# hello world888888888
ret=str1.center(20,'*')    #设置格式左对齐,剩余部分已“*”填充
print(ret)
# ****hello world*****
ret=str1.rjust(20,'&')     #设置格式右对齐,剩余部分已“&”填充
print(ret)
# &&&&&&&&&hello world
 

 (3)expandtabs:将tab转换成空格,默认一个tab转换成8个空格。当然这里也可以自行指定转换成多少个空格,

(这是linux下,如果windows下,需要打出\t)
>>> name = ' hello world' >>> name.expandtabs() ' hello world' >>> name.expandtabs(20) ' hello world'

 

(4)strip:默认去掉两端的空格. 空白\t \n和两端的指定内容

# 可以去空格
s='            haha houhou hehe xixi        '
ret=s.strip()
print(ret)
# haha houhou hehe xixi


#
可以去\t \n \r s='haha houhou hehe xixi\t' ret1=s.strip() # haha houhou hehe xixi

#
可以去除指定内容 s='haha houhou xixi hehe' ret=s.strip('haha') print(ret) # houhou xixi hehe前面有个空格

(5)字符串的替换.

s='哈哈 嘻嘻 吼吼 呵呵呵'
ret=s.replace('哈哈','中秋节')
print(ret)
# 中秋节 嘻嘻 吼吼 呵呵呵

# 如果没有也不会报错
s='哈哈 嘻嘻 吼吼 呵呵呵'
ret=s.replace('lili','中秋节')
print(ret)
# 哈哈 嘻嘻 吼吼 呵呵呵

s='hello world hello 林俊杰 hello 你好'
ret=s.replace('hello','hi',2)
print(ret)
# hi world hi 林俊杰 hello 你好

(6)字符串的切割

# 字符串的切割,切割记住一分为二,用谁切割牺牲谁
s='hello world today is autumn'
ret=s.split(' ')
print(ret)
# ['hello', 'world', 'today', 'is', 'autumn']


# 字符串转化成列表,用字符串里不存在的一个元素即可
s='hello world today is autumn'
ret=s.split('q')
print(ret)
# ['hello world today is autumn']

s="""门前大桥下,
游过一群鸭,
快来快来数一数,
二四六七八"""
ret=s.split('\n')
print(ret)


s='hello world today is autumn welcome world hello'
ret=s.split('hello')
print(ret)
# ['', ' world today is autumn welcome world ', '']

 

 

3.格式化输出

# 格式化输出
s='我叫%s,今年%s岁了,我喜欢%s'%('name','age','hobby')
print(s)
# 我叫name,今年age岁了,我喜欢hobby
s='我叫{},我喜欢{}'.format('name','hobby')
print(s)
# 我叫name,我喜欢hobby
s='我叫{0},我喜欢{1}再说一遍我叫{0}'.format('name','hobby')
print(s)
# 我叫name,我喜欢hobby再说一遍我叫name
s='我叫{name},我喜欢{hobby}再说一遍我叫{name}'.format(name='name',hobby='hobby')
# 我叫name,我喜欢hobby再说一遍我叫name

 

4.查找 

 

# 判断是否以XXX开头
s="hello world"
ret=s.startswith('h')
print(ret)
# True
# 判断是否以什么结尾
s="hello world"
ret=s.endswith('d')
print(ret)
# True
s="hello world"
ret=s.count('o')
print(ret)
# 没有输出零次
# 2

s="hello world"
ret=s.find('o')
print(ret)
# 找到第一个就返回下标位置,如果没有返回-1
# 4
  rfind:和find用法一样,只是它是从右向左查找
s="hello world"
ret=s.index('o')
# 找到第一个就返回下标位置,如果没有就会报错
print(ret)

 

 

 

 5.条件判断

 (9)isalnum:是否是字母或数字

   isalpha:是否字母

  isdigit:是否数字

  isspace:是否空格

  islower:是否小写

  istitle:是否标题

  isupper:是否全大写,

  总之都是一些判断的方法,返回的不是True就是False

6.计算字符串的长度

s="hello world"
print(len(s))
# 11

7.迭代

s = "王小利刘能赵四"
n=0
while n<len(s):
    print(s[n])
    n=n+1
#
#
#
#
#
#
#


s="hello world"
for i in  s:
    print(i)
# h
# e
# l
# l
# o
# 
# w
# o
# r
# l
# d

 

 

四.list

1.列表

列表的切片与索引

2.列表的增删改查

  2.1增

  2.2删

  2.3改

  2.4查

  2.5排序

  2.6翻转

3.列表的嵌套

 

 1.列表 

 

列表的切片与索引

列表和字符串一样有索引

1.索引

lst=['哈哈','吼吼','呵呵','嘻嘻']
print(lst[0])
print(lst[2])
print(lst[3])

# 哈哈
# # 呵呵
# # 嘻嘻

 

2.切片

# 列表的切片
lst=['哈哈','吼吼','呵呵','嘻嘻']
print(lst[1:3])
# ['吼吼', '呵呵']

print(lst[:])
# ['哈哈', '吼吼', '呵呵', '嘻嘻']

#注意 print(lst[-1:-3]) # [] print(lst[-1::-2]) # ['嘻嘻', '吼吼']

 

 

2.列表的增删改查

注意: list和str是不一样的,lst可以发生改变,所以直接在对象上修改就可以了 

  2.1增

1.append
lst=['大邋遢','真邋遢','邋遢大王','就是她']
# 在屁股后面添加
lst.append('哈哈')
print(lst)
# ['大邋遢', '真邋遢', '邋遢大王', '就是她', '哈哈']

2.insert
lst1=['大邋遢','真邋遢','邋遢大王','就是她']
# 在xxx位置插入xxxx内容
lst1.insert(1,'haha')
print(lst1)
# ['大邋遢', 'haha', '真邋遢', '邋遢大王', '就是她']

3.extend()
lst2=['大邋遢','真邋遢','邋遢大王','就是她']
# 迭代添加
lst2.extend('haha')
print(lst2)
# ['大邋遢', '真邋遢', '邋遢大王', '就是她', 'h', 'a', 'h', 'a'
lst2.extend(['哈哈'])
print(lst2)
# ['大邋遢', '真邋遢', '邋遢大王', '就是她', 'h', 'a', 'h', 'a', '哈哈']

  

  2.2删

1.pop(索引)
lst=['煎饼果子','板栗糕','烤冷面','臭豆腐']
# pop参数为索引,可以看到删除元素,如果索引超过会报错
data=lst.pop(1)
print(data)
print(lst)
# 板栗糕
# ['煎饼果子', '烤冷面', '臭豆腐']

2.remove(元素)
lst1=['煎饼果子','板栗糕','烤冷面','臭豆腐']
# 参数是元素,如果没有就会报错
lst1.remove('臭豆腐')
print(lst1)
# ['煎饼果子', '板栗糕', '烤冷面']


3.del 切片式 lst2=['煎饼果子','板栗糕','烤冷面','臭豆腐'] del lst2[1:3] print(lst2) # ['煎饼果子', '臭豆腐'] 4.clear清空 lst3=['煎饼果子','板栗糕','烤冷面','臭豆腐'] lst3.clear() print(lst3) # []

 

  

  2.3改

# 直接改
lst=['锅包肉','火锅','烧烤','水煮鱼']
lst[0]='米线'
print(lst)
# ['米线', '火锅', '烧烤', '水煮鱼']


# 切片改:相当于先删除后添加
lst1=['锅包肉','火锅','烧烤','水煮鱼']
lst1[1:3]='麻辣烫'
# ['锅包肉', '麻', '辣', '烫', '水煮鱼']
lst1[1:3]=['麻辣烫']
print(lst1)
# ['锅包肉', '麻辣烫', '烫', '水煮鱼']


lst1=['锅包肉','火锅','烧烤','水煮鱼']
lst1[1::2] = ["酸辣粉","韭菜盒子"]
#  切片修改的时候. 如果步长不是1. 注意元素的个数
print(lst1)
# ['锅包肉', '酸辣粉', '烧烤', '韭菜盒子']

 

  

  2.4查

lst=['昌平区','海淀区','哈哈']
for el in lst:
    print(el)

# 昌平区
# 海淀区
# 哈哈

 

   

  2.5排序

# 默认升序
lst=[1,8,9,10,78,5,6]
lst.sort()
print(lst)
# [1, 5, 6, 8, 9, 10, 78]

# 加上之后倒叙
lst.sort(reverse=True)
print(lst)
# [78, 10, 9, 8, 6, 5, 1]

  

  2.6翻转

lst1=['哈哈','吼吼','呵呵']
lst1.reverse()
print(lst1)
# ['呵呵', '吼吼', '哈哈']

 

3.列表的嵌套

lst=['北京',['长城','香山'],'大庆',['博物馆','湿地']]
print(lst)
# ['北京', ['长城', '香山'], '大庆', ['博物馆', '湿地']]


lst=['北京',['长城','香山'],'大庆',['博物馆',['猛犸象','','people'],'湿地']]
print(lst[3][1][1])
#
lst[3][1][2]=lst[3][1][2].upper()
print(lst)
# ['北京', ['长城', '香山'], '大庆', ['博物馆', ['猛犸象', '狼', 'PEOPLE'], '湿地']]

 

五.tuple

 1.元组

2.元组的嵌套

 

 1.元组:如果只有一个元素,一定要添加一个逗号,否则就不是元组

  元组:俗称不可变列表,又被称为只读列表.元组也是python的基础数据类型之一,用小括号括起来,里面可以放任何数据类型的数据,查询也可以,循环也可以,切片也可以,但是不可以改.

# tuple 元组只读列表
tu=('hello','world','hi')
print(tu[1])
# world


tu=('hello','world','hi')
# 切片之后还是元组
print(tu[1:3])
# ('world', 'hi')

for el in tu:
    print(el)
# hello
# world
# hi

 

 2.元组的嵌套

# 元组的不可变的意思,是子元素不可变,而子元素内部的子元素是可变的,这取决于子元素的是否是可变对象
lst1=['哈哈',[],'呵呵']
lst1[1].append('吼吼')
# 可以添加了
print(lst1)
# ['哈哈', ['吼吼'], '呵呵']


#反着来和切片一样 
for  i in range(10,1,-2):
    print(i)
# 10
# 8
# 6
# 4
# 2

 

六.dict

1.字典

2.字典的增删改查

  2.1增

  2.2删

  2.3改

  2.4查

3.字典的嵌套

 

1.字典

  字典(dict)是pyhton中的唯一的一个映射类型,他是以{ }括起来的键值对组成,在dict中key是唯一的,在保存的根据key来计算出一个内存地址,然后将key-value保存在这个地址中,这种算法被称为hash算法,切记:dict中存储的key-value中的key必须是可hash的.value没有要求,可以保存任意类型的数据

 

已知可哈西的(不可变)的数据类型:int,str,tuple,bool

不可哈希(可变)的数据类型:list,dict,set

 

语法:{key1:value1,key2:value2,}

dic={'name':'刘晓蕾','id':'123','age':18}
print(dic['name'])
# 刘晓蕾

dic1={(1,2,3):'刘晓蕾','id':'123','age':18}
print(dic1)
# {(1, 2, 3): '刘晓蕾', 'id': '123', 'age': 18}

 

 

dict保存的数据不是按照我们添加进去的顺序保存,是按照hash表的顺序保存的,而hash表不是连续的,所以不能进行切片工作,只能通过key来取值

2.字典的相关操作

  

 2.1增

# 增加
dic={'name':'刘晓蕾','id':123,'edu':'大学'}
dic['age']='18'
dic['name']='李嘉诚'
print(dic)
# 如果dict中没有出现这个key,就会新增一个key-value的组合进dict
# 如果有则进行覆盖
# {'name': '李嘉诚', 'id': 123, 'edu': '大学', 'age': '18'}


dic1={'name':'刘晓蕾','id':123,'edu':'大学'}
# 如果没有就就行添加
dic1.setdefault('天王')
print(dic1)
# {'name': '刘晓蕾', 'id': 123, 'edu': '大学', '天王': None}



dic2={'name':'刘晓蕾','id':123,'edu':'大学'}
dic2.setdefault('天王','刘德华')
# 如果没有就进行添加
print(dic2)
# {'name': '刘晓蕾', 'id': 123, 'edu': '大学', '天王': '刘德华'}



dic2={'name':'刘晓蕾','id':123,'edu':'大学'}
dic2.setdefault('name','哈哈')
print(dic2)
# 如果有就不会起作用
# {'name': '刘晓蕾', 'id': 123, 'edu': '大学'}

 

 2.2删pop   del  clear

# 删除
# 字典是pop,列表里面是pop(索引),remove('元素')
dic={'name':'哈哈','id':'15100','edu':'本科'}
ret=dic.pop('name')
print(ret)  #返回键值
print(dic)
# 哈哈
# {'id': '15100', 'edu': '本科'}

# 随机删除
dic2={'name':'哈哈','id':'15100','edu':'本科'}
ret=dic2.popitem()
print(ret)  #返回一个元组
print(dic2)
# ('edu', '本科')
# {'name': '哈哈', 'id': '15100'}

# 清空字典中的所有内容
dic3={'name':'哈哈','id':'15100','edu':'本科'}
dic3.clear()
print(dic3)

# {}

 

 2.3改

 

# 修改

# 直接索引修改
dic4={'id':123,'name':'某某','age':18,'job':'none'}
dic4['id']='151'
print(dic4)
# {'id': '151', 'name': '某某', 'age': 18, 'job': 'none'}

# update
dic6={'hobby':'fishing','name':'哈哈'}
dic5={'id':123,'name':'某某','age':18,'job':'none'}
dic5.update(dic6)
# ,dic6的内容更新到dic5中,如果key重名则进行替换,如果不存在key则添加
print(dic5)
# {'id': 123, 'name': '哈哈', 'age': 18, 'job': 'none', 'hobby': 'fishing'}
print(dic6)
# {'hobby': 'fishing', 'name': '哈哈'}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 2.4查

 

 

 

 

 

 

 

 

 

 

 

 

3.字典的嵌套

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

七.集合

 

posted @ 2018-07-30 17:41  2275114213  阅读(317)  评论(0编辑  收藏  举报