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

Python基本数据类型

时间:2018-12-18 10:54:16      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:hello   sid   sdi   add   可迭代对象   index   改变   pca   inf   

运算符:

1.算数运算符
+加, -减, *乘 ,/除 ,%取余, **幂 ,//取整除
2.赋值运算
=, += ,-= ,*= ,/= ,%= ,**=, //=
3.比较运算
== ,!=(<>), >, < ,>= ,<=
4.逻辑运算
and , or , not
5.成员运算
in , not in

 

基本数据类型:

1.i数字

int整型
创建:age=10  或 age=int(10)
float浮点型
创建:salary=3.1 或 salary=float(3.1)

2.bool布尔      None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False

  真或假
  1 或 0

3.str字符串

创建:name="tom" 或 name=str("tom")

常用功能:

移除空白
分割
长度
索引
切片
格式化输出  
print(My name is %s,my age is %s%(tom,18))  # My name is tom,my age is 18 
#strip
name=*egon**
print(name.strip(*))
print(name.lstrip(*))
print(name.rstrip(*))

#lower,upper
name=egon
print(name.lower())
print(name.upper())

#startswith,endswith
name=alex_SB
print(name.endswith(SB))
print(name.startswith(alex))

#format的三种玩法
res1={} {} {}.format(egon,18,male)
res2={1} {0} {1}.format(egon,18,male)
res3={name} {age} {sex}.format(sex=male,name=egon,age=18)
print(res1)
#egon 18 male
print(res2)
#18 egon 18
print(res3)
#egon 18 male



#split
name=root:x:0:0::/root:/bin/bash
print(name.split(:)) #默认分隔符为空格
name=C:/a/b/c/d.txt #只想拿到顶级目录
print(name.split(/,1)) #[‘C:‘, ‘a/b/c/d.txt‘]

name=a|b|c
print(name.rsplit(|,1)) #从右开始切分 [‘a|b‘, ‘c‘]

#join
tag= 
print(tag.join([egon,say,hello,world])) #可迭代对象必须都是字符串

#replace
name=alex say :i have one tesla,my name is alex
print(name.replace(alex,SB,1))

#isdigit:可以判断bytes和unicode类型,是最常用的用于于判断字符是否为"数字"的方法
age=input(>>: )
print(age.isdigit())

#请输出 name 变量对应的值的第 2 个字符  name[1]
#请输出 name 变量对应的值的后 2 个字符  name[-2:]
#获取子序列,去掉最后一个字符   a=name[:-1]
#请输出 name 变量对应的值的前 3 个字符  name[:3]
#请输出 name 变量对应的值中 “e” 所在索引位置? name.index(‘e‘)
#find,rfind,index,rindex,count
name=egon say hello
print(name.find(o,1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引
# print(name.index(‘e‘,2,4)) #同上,但是找不到会报错
print(name.count(e,1,3)) #顾头不顾尾,如果不指定范围则查找所有

#center,ljust,rjust,zfill
name=egon
print(name.center(30,-)) #-------------egon-------------
print(name.ljust(30,*)) #egon**************************
print(name.rjust(30,*)) #**************************egon
print(name.zfill(50)) #用0填充0000000000000000000000000000000000000000000000egon

#expandtabs
name=egon\thello
print(name) #egon      hello
print(name.expandtabs(1)) #egon hello

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

#is数字系列
#在python3中
num1=b4 #bytes
num2=u4 #unicode,python3中无需加u就是unicode
num3= #中文数字
num4= #罗马数字

#isdigt:bytes,unicode
print(num1.isdigit()) #True
print(num2.isdigit()) #True
print(num3.isdigit()) #False
print(num4.isdigit()) #False

#isdecimal:uncicode
#bytes类型无isdecimal方法
print(num2.isdecimal()) #True
print(num3.isdecimal()) #False
print(num4.isdecimal()) #False

#isnumberic:unicode,中文数字,罗马数字
#bytes类型无isnumberic方法
print(num2.isnumeric()) #True
print(num3.isnumeric()) #True
print(num4.isnumeric()) #True

#三者不能判断浮点数
num5=4.3
print(num5.isdigit()) #False
print(num5.isdecimal()) #False
print(num5.isnumeric()) #False
‘‘‘
总结:
    最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
    如果要判断中文数字或罗马数字,则需要用到isnumeric
‘‘‘

#is其他
print(===>)
name=egon123
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成

print(name.isidentifier()) #True
print(name.islower()) #True
print(name.isupper()) #False
print(name.isspace()) #False
print(name.istitle()) #False

示例 

4.list列表 (有序可变)

创建:name_list=[tom,rose,lucy] 或 name_list=list([tom,rose,lucy])
常用功能:

索引
切片
追加
删除
长度
切片
循环
包含
#ps:反向步长
l=[1,2,3,4,5,6]

#正向步长
l[0:3:1] #[1, 2, 3]
#反向步长
l[2::-1] #[3, 2, 1]
#列表翻转
l[::-1] #[6, 5, 4, 3, 2, 1]

 

user_info=[[tom,18,[play,]],[rose,20,[sing,paint]]]
print(user_info[1][2][1]) #paint
print(user_info[0][0]) #tom
print(user_info[0][2]) #[‘play‘]
print(user_info[1][1]) #20
print(user_info[1]) #[‘rose‘, 20, [‘sing‘, ‘paint‘]]


#字典无序,取值用key
user_info=[
    {name:tom,age:18,hobbies:[paly]},
    {name:rose,age:20,hobbies:[sing,paint]},
]
print(user_info[1][hobbies][1]) #paint
print(user_info[0][name]) #tom
print(user_info[0][hobbies]) #[‘play‘]
print(user_info[1][age]) #20
print(user_info[1]) #{‘name‘: ‘rose‘, ‘age‘: 20, ‘hobbies‘: [‘sing‘, ‘paint‘]}


user_info={
    vip:{name:tom,age:18,hobbies:[paly]},
    gold:{name:rose,age:20,hobbies:[sing,paint]},
}
print(user_info[gold][hobbies][1]) #paint
print(user_info[vip][name]) #tom
print(user_info[vip][hobbies]) #[‘play‘]
print(user_info[gold][age]) #20
print(user_info[gold]) #{‘name‘: ‘rose‘, ‘age‘: 20, ‘hobbies‘: [‘sing‘, ‘paint‘]}

5.dict字典(无序可变)

创建:user={"name":"tom","age":18}或user=dict({"name":"tom","age":18})
常用功能:

索引
新增
删除
键、值、键值对
循环
长度
#作用:存多个值,key-value存取,取值速度快

#定义:key必须是不可变类型,value可以是任意类型
info={name:egon,age:18,sex:male} #本质info=dict({....})
或
info=dict(name=egon,age=18,sex=male)
或
info=dict([[name,egon],(age,18)])
或
{}.fromkeys((name,age,sex),None)

#优先掌握的操作:
#1、按key存取值:可存可取
#2、长度len
#3、成员运算in和not in

#4、删除
#5、键keys(),值values(),键值对items()
#6、循环
s=hello alex alex say hello sb sb

l=s.split()
dic={}
for item in l:
    if item in dic:
        dic[item]+=1
    else:
        dic[item]=1
print(dic)

s=hello alex alex say hello sb sb
dic={}
words=s.split()
print(words)
for word in words: #word=‘alex‘
    dic[word]=s.count(word)
    print(dic)


#利用setdefault解决重复赋值
‘‘‘
setdefault的功能
1:key存在,则不赋值,key不存在则设置默认值
2:key存在,返回的是key对应的已有的值,key不存在,返回的则是要设置的默认值
d={}
print(d.setdefault(‘a‘,1)) #返回1

d={‘a‘:2222}
print(d.setdefault(‘a‘,1)) #返回2222
‘‘‘
s=hello alex alex say hello sb sb
dic={}
words=s.split()
for word in words: #word=‘alex‘
    dic.setdefault(word,s.count(word))
    print(dic)



#利用集合,去掉重复,减少循环次数
s=hello alex alex say hello sb sb
dic={}
words=s.split()
words_set=set(words)
for word in words_set:
    dic[word]=s.count(word)
    print(dic)

其他做法(重点看setdefault的用法)

 

6.tuple元组(有序不可变)

创建:name_tuple=(tom,rose,lucy) 或 name_tuple=tuple((tom,rose,lucy))
常用功能:

索引
切片
循环
长度
包含

7.set 集合(无序且不重复的元素集合)

# 有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
pythons={alex,egon,yuanhao,wupeiqi,gangdan,biubiu}
linuxs={wupeiqi,oldboy,gangdan}
# 求出即报名python又报名linux课程的学员名字集合
print(pythons & linuxs)
# 求出所有报名的学生名字集合
print(pythons | linuxs)
# 求出只报名python课程的学员名字
print(pythons - linuxs)
# 求出没有同时这两门课程的学员名字集合
print(pythons ^ linuxs)
#去重,无需保持原来的顺序
l=[a,b,1,a,a]
print(set(l))

#去重,并保持原来的顺序
#方法一:不用集合
l=[1,a,b,1,a]

l1=[]
for i in l:
    if i not in l1:
        l1.append(i)
print(l1)
#方法二:借助集合
l1=[]
s=set()
for i in l:
    if i not in s:
        s.add(i)
        l1.append(i)

print(l1)


#同上方法二,去除文件中重复的行
import os
with open(db.txt,r,encoding=utf-8) as read_f,        open(.db.txt.swap,w,encoding=utf-8) as write_f:
    s=set()
    for line in read_f:
        if line not in s:
            s.add(line)
            write_f.write(line)
os.remove(db.txt)
os.rename(.db.txt.swap,db.txt)

#列表中元素为可变类型时,去重,并且保持原来顺序
l=[
    {name:egon,age:18,sex:male},
    {name:alex,age:73,sex:male},
    {name:egon,age:20,sex:female},
    {name:egon,age:18,sex:male},
    {name:egon,age:18,sex:male},
]
# print(set(l)) #报错:unhashable type: ‘dict‘
s=set()
l1=[]
for item in l:
    val=(item[name],item[age],item[sex])
    if val not in s:
        s.add(val)
        l1.append(item)

print(l1)






#定义函数,既可以针对可以hash类型又可以针对不可hash类型
def func(items,key=None):
    s=set()
    for item in items:
        val=item if key is None else key(item)
        if val not in s:
            s.add(val)
            yield item

print(list(func(l,key=lambda dic:(dic[name],dic[age],dic[sex]))))

 

其他:

1、enumrate 为可迭代的对象添加序号
user=[tom,rose,jack]
for k,v in enumerate(user):
    print(k,v)
"""
0 tom
1 rose
2 jack
"""

user=[tom,rose,jack]
for k,v in enumerate(user,25):
    print(k,v)
"""
25 tom
26 rose
27 jack
"""

2.for循环

user=[tom,rose,jack]
for item in user:
    print(item)
"""
tom
rose
jack
"""

3.range范围

for item in range(10):
    print(item)
"""
0
1
2
3
4
5
6
7
8
9
"""

for item in range(5,10):
    print(item)
"""
5
6
7
8
9
"""

for item in range(5,10,2):
    print(item)
"""
5
7
9
"""

for item in range(5,10,-2):
    print(item)
"""
没有任何效果
"""

for item in range(10,5,2):
    print(item)
"""
没有任何效果
"""

for item in range(10,5,-2):
    print(item)
"""
10
8
6
"""

4.注释

当行注视:# 被注释内容,多行注释:""" 被注释内容 """

5.文件头

#!/usr/bin/env python
# -*- coding: utf-8 -*- 

6.变量规范

命名:下划线(推荐使用) user_num=20
#1. 变量名只能是 字母、数字或下划线的任意组合
#2. 变量名的第一个字符不能是数字
#3. 关键字不能声明为变量名[‘and‘, ‘as‘, ‘assert‘, ‘break‘, ‘class‘, ‘continue‘, ‘def‘, ‘del‘, ‘elif‘, ‘else‘, ‘except‘, ‘exec‘, ‘finally‘, ‘for‘, ‘from‘, ‘global‘, ‘if‘, ‘import‘, ‘in‘, ‘is‘, ‘lambda‘, ‘not‘, ‘or‘, ‘pass‘, ‘print‘, ‘raise‘, ‘return‘, ‘try‘, ‘while‘, ‘with‘, ‘yield‘]

7.id value type (等号比较的是value,is比较的是id)

可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典
不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)
str1=hello world
str2=hello world
print(id(str1)) #8205552
print(id(str2)) #8205552
print(str1 is str2) #True
print(str1==str2) #True


str1=22
str2=22
print(id(str1)) #12234008
print(id(str2)) #1403847792
print(str1 is str2) #False
print(str1==str2) #False

Python基本数据类型

标签:hello   sid   sdi   add   可迭代对象   index   改变   pca   inf   

原文地址:https://www.cnblogs.com/bubu99/p/10134926.html

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