第二篇:数据类型

1、数字

包括整形,长整形,浮点型,复数

作用:年纪,等级,薪资,身份证号,qq号等数字相关

 

整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。

浮点型(float) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)

复数( (complex)) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

Python 数字类型转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

  • int(x) 将x转换为一个整数。

  • float(x) 将x转换到一个浮点数。

  • complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。

  • complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。

int(x [,base]) 将x转换为一个整数 
float(x ) 将x转换到一个浮点数 
complex(real [,imag]) 创建一个复数 
str(x) 将对象x转换为字符串 
repr(x) 将对象x转换为表达式字符串 
eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象 
tuple(s) 将序列s转换为一个元组 
list(s) 将序列s转换为一个列表 
chr(x) 将一个整数转换为一个字符 
unichr(x) 将一个整数转换为Unicode字符 
ord(x) 将一个字符转换为它的整数值 
hex(x) 将一个整数转换为一个十六进制字符串 
oct(x) 将一个整数转换为一个八进制字符串

  

2、字符串

作用:名字,性别,国籍,地址等描述信息

定义:在单引号\双引号\三引号内,由一串字符组成

创建字符串很简单,只要为变量分配一个值即可。例如:

>>> name='jun xun'
>>> var="hello world!"
>>> print(name)
jun xun
>>> print(var)
hello world!

  

字符串常用操作如下:

2.1 移除空白strip

name=input('please you name: ')

print(name) 

执行上面代码后

如上,输入空格后再输入姓名,会将空格也打印出来,要想输入空格后打印的不包含空格就需要进行移除空白操作了

 

name=input('please you name: ')

name=name.strip()

print(name)

 

上面的代码简化后操作

name=input('please you name: ').strip()
print(name)

也可写成如下操作代码

name=input('please you name: ')
print(name.strip())

2.2 切分split

示例1:

user_info='root:x:0:0::/root:/bin/bash'
print(user_info.split(':')[5])   

#注释:

这里user_info为变量名

split为切割参数

(':')以:为切割符

[5] 取变量名user_info以:切割后的下标为5的字符串

 

示例2:

cmd_info='get|a.txt|33333333'
print(cmd_info.split('|')[0])

 

  

2.3 长度len

 取出字符串里面字符串的长度

name='junxun'
print(name.__len__())

name='junxun'
print(len(name))

注释:

这里len(name)相当于name.__len__()

2.4 切片

name='hello world'
print(name[1:4])

执行上述代码结果如下,

 2.5其它重要参数

#endswith 判断字符串以什么为结尾
name='jun_xun'
print(name.endswith('xun'))   #判断变量name值的字符串是否以xun结尾

#startswith  判断字符串是否以什么为开头
name='jun_xun'
print(name.startswith('jun'))  #判断变量name值的字符串是否以jun为开头

#replace  1.2.7 字符串替换
name='jun say :i have one tesla,my name is jun'
print(name.replace('jun','xun',1)) #将字符串jun替换成xun,只替换1次

#字符串format格式化输出
print('{},{},{}'.format('jun',18,'xun'))

#isdigit 判断字符串里是否只有数字
num='123'
print(num.isdigit())

#find   查找字符串以下标(find),查找找不到的不会报错,显示-1
name="junxun hello"
print(name.find('x'))  #打印字母x的下标
print(name.find('b'))  #打印字母b的下标,不存在会显示-1
print(name.find('o',3,6))  #打印从下标3到下标6之间的字母o,不存在会显示-1

#index  查找字符串以下标(index),查找找不到的会报错
name='junxun hello'
print(name.index('x'))  #打印字母x的下标
print(name.index('b'))  #打印字母b的下标,不存在报错

#count  显示字符串中字母出现的次数(count)
name='junxun hello'
print(name.count('u'))   #显示字母出现u的次数
print(name.count('u',0,3))  #显示下标0到3之间字母出现的次数

  

2.6 其它了解参数

b=['junxun','say','hello']  #类别内容必须都是字符串
print(':'.join(b))

name='junxun'
print(name.center(30,'*'))
print(name.ljust(30,'*'))
print(name.rjust(30,'*'))
print(name.zfill(30))

name='ning\thello'
print(name)
print(name.expandtabs(1))


name='JUN'
print(name.lower())

name='jun'
print(name.upper())

name='ning say'
print(name.capitalize()) #首字母大写
print(name.swapcase()) #大小写翻转
msg='ning say hi'
print(msg.title()) #每个单词的首字母大写

name='ning123'
print(name.isalnum()) #字符串由字母和数字组成
name='ning'
print(name.isalpha()) #字符串只由字母组成

num1=b'4' #Bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='四' #中文数字
num4='Ⅳ' #罗马数字
# bytes,unicode
print(num1.isdigit())
print(num2.isdigit())
print(num3.isdigit())
print(num4.isdigit())
# isdecimal:unicode
print(num2.isdecimal())
print(num3.isdecimal())
print(num4.isdecimal())
# isnumberic:unicode,汉字,罗马
print(num2.isnumeric())
print(num3.isnumeric())
print(num4.isnumeric())

 

2.7 python字符串运算符

下表实例变量a值为字符串 "Hello",b变量值为 "Python":

 

3、 列表 

作用:多个装备,多个爱好,多门课程,多个女朋友等

定义:[]内可以有多个任意类型的值,逗号分隔

 

my_girl_friends=['ning','jun','linux','python',3,5,7]
# my_girl_friends=list(['ning','jun','linux','python',3,5,7])


# print(type(my_girl_friends))

# print(my_girl_friends[2])
#
# print(my_girl_friends[1:3])

# my_girl_friends.append('mysql')
# print(my_girl_friends)

#pop按照索引
# my_girl_friends.pop()
# my_girl_friends.pop()
# my_girl_friends.pop(0)
# my_girl_friends.pop(0)
# my_girl_friends.pop(1)

#remove按照值
# my_girl_friends.remove('ning')
# print(my_girl_friends)


# my_girl_friends.__len__()
# print(len(my_girl_friends))

# print('ning' in my_girl_friends)
#
# msg='my name is jun111111'
# print('jun' in msg)

#其他操作(掌握)
# my_girl_friends=['ning','jun','linux','python',3,5,7]
# my_girl_friends.insert(1,'mysql')
# print(my_girl_friends)




#其他操作(了解)
my_girl_friends=['ning','jun','linux','ning','python',3,5,7]
# my_girl_friends.clear()
# print(my_girl_friends)

# l=my_girl_friends.copy()
# print(l)

# print(my_girl_friends.count('ning'))

# my_girl_friends.append('vpn1')
# my_girl_friends.append('vpn2')
# my_girl_friends.append('vpn3')
# print(my_girl_friends)
# my_girl_friends.extend(['vpn1','vpn2','vpn3'])
# print(my_girl_friends)

# print(my_girl_friends.index('ning'))
# my_girl_friends.reverse()
# print(my_girl_friends)

# l=[3,-1,5,2]
# l.sort(reverse=True)
# print(l)



#练习一:
data=['ning',18,[1999,3,25]]
# print(data[0])
# print(data[1])
# print(data[2][0])


# name,age,birth=data
# print(name)
# print(age)
# print(birth)
#
#
# msg='hello'
# a,b,c,d,e=msg
# print(a,b,c,d,e)


# msg='hello'
# a,_,_,_,b=msg
# print(a)
# print(b)

# a,*_,b=msg
# print(a,b)


#队列:先进先出
fifo=[]
#入队
# fifo.append('first')
# fifo.append('second')
# fifo.append('third')
# print(fifo)
# #出队
# print(fifo.pop(0))
# print(fifo.pop(0))
# print(fifo.pop(0))

#入队
# fifo.insert(0,'first')
# fifo.insert(0,'second')
# fifo.insert(0,'third')
# print(fifo)
#
# #出队
# print(fifo.pop())
# print(fifo.pop())
# print(fifo.pop())



#堆栈:先进后出
lifo=[]

 

4、元组

 

作用:存多个值,对比列表来说,元组不可变,主要是用来读

定义:与列表类型,只不过[]换成()

          可以当做字典的key

           age=(11,22,33,44,55)本质age=tuple((11,22,33,44,55))

 

Python 的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

如下实例:

tup1 = ('Google', 'Runoob', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";

创建空元组

tup1 = ();

元组与字符串类似,下标索引从0开始,可以进行截取,组合等。  

 

元组使用方法:

age=(11,22,33,44,55,33)# 本质age=tuple((11,22,33,44,55))

# print(age[2])
# print(age[1:4])
# print(len(age))
#
# print(11 in age)


# print(age.index(33))
# print(age.count(33))


#元组练习:简单购物车
#实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用户重新输入  
msg_dic={
'apple':10,
'tesla':100000,
'mac':3000,
'lenovo':30000,
'chicken':10,
}
goods_l=[]

while True:
    for key in msg_dic:
        # print('Goods Name:%s Price:%s' %(key,msg_dic[key]))
        print('\033[43mName:{name} Price:{price}\033[0m'.format(price=msg_dic[key],name=key))
    choice=input('your goods name>>: ').strip()
    if len(choice) == 0 or choice not in msg_dic:continue
    count=input('your count>>: ').strip()
    if count.isdigit():
        goods_l.append((choice,msg_dic[choice],int(count)))
    print(goods_l)

  

  

 

5、字典 

作用:存多个值,key-value存取,取值速度快

定义:key必须是不可变类型,value可以是任意类型

 

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

  

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

一个简单的字典实例:

dict = {'ning': '2341', 'jun': '9102', 'xun': '3258'}

也可如此创建字典:

dict1={'abc':456}
dict2={'abc':123,95.5:24}

  

字典使用方法

info={'name':'ning','age':18,'sex':'male'}
#本质info=dict({'name':'ning','age':18,'sex':'male'})


# print(info['age'])
# info['height']=1.80
#
# print(info)
#
# for key in info:
#     print(key)


#字典的key必须是不可变类型,也成为可hash类型
# info={(1,2):'a'}
# print(info[(1,2)])

#字典常用的方法(优先掌握)
info={'name':'ning','age':18,'sex':'male'}
# print(info.pop('name'))
# print(info)
# print(info.pop('aasdffasdfasfgagfsgasf',None))


# print(info['name1'])
# print(info.get('name1'))
# print(info.get('sdafffkgasdasafs','not key'))


#字典其他的方法
info={'name':'ning','age':18,'sex':'male'}
# print(info.popitem())
# print(info.popitem())
# print(info)
#
# print(info.keys(),type(info.keys()))
# print(info.values())

# for key in info.keys():
#     print(key)

# for key in info.values():
#     print(key)

# for key in info:
#     print(key,info[key])

# print(info.items())
# for key,value in info.items(): # key,value=('name','ning')
#     print(key,value)


# msg_dic={
# 'apple':10,
# 'tesla':100000,
# 'mac':3000,
# 'lenovo':30000,
# 'chicken':10,
# }
# for key,value in msg_dic.items():
#     print(key,value)


# info={'name':'ning','age':18,'sex':'male'}
# info.clear()
# print(info)

# print(info.items())
# dic=info.fromkeys(['name','age','sex'],11111111)
# print(dic)
#
# dic=info.fromkeys(['name','age','sex'],None)
# print(dic)

#
# dic=dict(a=1,b=2,c=3)
# print(dic)

# print(info.items())

# print(dict([('name', 'ning'), ('age', 18), ('sex', 'male')]))


# dic=dict.fromkeys(['name','age','sex'],11111111)
# print(dic)
# print(info)





# print(info)
# dic={'a':1,'b':2,'name':'SHUAI'}
# info.update(dic)
# print(info)


# d=dict.setdefault(['a','b','c'],[])
# print(d)
#
# d={}
# print(d)
# d['name']='ning'
# d['age']=18
# d['sex']='male'
# # d['hobby']=[]
# # d['hobby'].append('play basketball')
# # d['hobby'].append('play football')
#
# d.setdefault('hobby',[]).append('play1') #d['hobby']
# d.setdefault('hobby',[]).append('play2') #d['hobby']
# d.setdefault('hobby',[]).append('play3') #d['hobby']
# print(d)


#字典练习
# nums=[11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
# dic={
#     'k1':[],
#     'k2':[],
# }
# for item in nums:
#     if item >= 66:
#         dic['k1'].append(item)
#     else:
#         dic['k2'].append(item)
#
# print(dic)

s='hello ning ning say hello python python'
words=s.split()
# print(words)
dic={}
for word in words:
    # print(word)
    if word not in dic:
        dic[word]=1
        #{'hello':1,'ning':1}
    else:
        dic[word]+=1

print(dic)

  

6、集合

作用:去重,关系运算,

定义:由不同元素组成的集合,集合中是一组无序排列的可hash值,可以作为字典的key

集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值

 

集合使用方法

# pythons=['ning','jun','xun','linux','mysql','nginx']
# linuxs=['ning','nginx','git']
#
# res=[]
# for p in pythons:
#     if p in linuxs:
#         res.append(p)
#
# print(res)
#关系运算???

#1 集合内可以有多个元素,但是每个元素都必须是不可变类型,即可hash类型
#2 集合内的元素唯一
#3 集合是无序的
# s={1,'a',1,1,1,1,1,1} #s=set({1,'a',1,1,1,1,1,1})


# s1=set('hello')
# print(s1,type(s1))
# s={'a',3,9,'b'}
# print(s)

#集合优先掌握的方法
# pythons={'ning','jun','xun','linux','mysql','nginx'}

# print('ning' not in pythons)
# print(pythons)
# print('mysql' not in pythons)
# print(pythons)

#关系运算
# s1={1,10,11,22}
# s2={1,11,33}

#交集
# print(s1 & s2)

#并集
# print(s1 | s2)

#差集
# print(s1 - s2)
# print(s2 - s1)

#对称差集
# print(s1 ^ s2)


#父集
# s1={1,2,3,4}
# s2={1,5}
# print(s1 >= s2)
#
# #子集
# print(s1 <= s2)
# print(s2 <= s1)


#集合练习一

# pythons=['ning','jun','xun','linux','mysql','nginx']
# linuxs=['ning','nginx','git']
#
#
# # 1. 求出即报名python又报名linux课程的学员名字集合
# print(pythons & linuxs)
# #   2. 求出所有报名的学生名字集合
# print(pythons | linuxs)
# #   3. 求出只报名python课程的学员名字
# print(pythons - linuxs)
# #   4. 求出没有同时这两门课程的学员名字集合
# print(pythons ^ linuxs)


#集合练习二:
#  1. 有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,去重,得到新列表,且新列表无需保持列表原来的顺序
# l=['a','b',1,'a','a']
#
# s=set(l)
# print(s)
# print(list(s)
# )


#    2.在上题的基础上,保存列表原来的顺序
# l=['a','b',1,'a','a']
#
# l1=[]
# for item in l:
#     if item not in l1:
#         l1.append(item)
# print(l1)
#
# l1=[]
# s=set()
# for item in l:
#     if item not in s:
#         s.add(item) #{'a','b',1}
#         # l1.append(item)
#         l1.append(item)
#
# print(l1)

#   
#    4.有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序
#
# l=[
#     {'name':'ning','age':18,'sex':'male'},
#     {'name':'jun','age':73,'sex':'male'},
#     {'name':'ning','age':20,'sex':'female'},
#     {'name':'ning','age':18,'sex':'male'},
#     {'name':'ning','age':18,'sex':'male'},
# ]
#
# l1=[]
# for item in l:
#     if item not in l1:
#         l1.append(item)
# print(l1)


# l1=[]
# s=set()
# for item in l:
#     val=(item['name'],item['age'],item['sex'])
#     # print(val)
#     if val not in s:
#         s.add(val)
#         # print(val)
#         l1.append(item)
#
# print(l1)


#集合的内置方法
# pythons=['ning','jun','xun','linux','mysql','nginx']
# linuxs=['ning','nginx','git']
# 1. 求出即报名python又报名linux课程的学员名字集合
# print(pythons & linuxs)
# print(pythons.intersection(linuxs))

#   2. 求出所有报名的学生名字集合
# print(pythons | linuxs)
# print(pythons.union(linuxs))
#   3. 求出只报名python课程的学员名字
# print(pythons - linuxs)
# print(pythons.difference(linuxs))
#   4. 求出没有同时这两门课程的学员名字集合
# print(pythons ^ linuxs)
# print(pythons.symmetric_difference(linuxs))

s={1,2,3,'a'}
# s.add(4)
# print(s)

# print(s.pop())

# s.remove('a')
# print(s)

# s.remove('vvvvvvvvvv')
# s.discard('aaaaaa')
# print(s)

  

 

posted @ 2017-07-13 15:30  junxun  阅读(314)  评论(0编辑  收藏  举报