基本数据类型

所有的方法(函数)都带括号,且括号内没带等号的参数需传给它一个值,带等号的参数相当于有默认值

1.数字 int

在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
1.int
  将字符串转换为数字
  
a="123"
b=int(a)
print(type(a),a)
print(type(b),b)



》》<class 'str'> 123
》》<class 'int'> 123

################################
num="a"
v=int(num,base=16)#base=16代表转换为16进制,16进制中a=10,b=11
print(v)

》》10
#####################
age=3
r=age.bit_length()#该方法表示当前数字的二进制,至少用n位表示
print(r)

》》2
type()方法返回括号内变量的数据类型
 

2.字符串 str

“hello world”  

a="123"
b=int(a)
print(type(a),a)
print(type(b),b)

》》<class 'str'> 123
》》<class 'int'> 123


#####################
num="a"
v=int(num,base=16)#base=16代表转换为16进制,16进制中a=10,b=11
print(v)

》》10


#####################
age=3
r=age.bit_length()#该方法表示当前数字的二进制,至少用n位表示
print(r)

》》2


#####################
test="alex"
v=test.capitalize()#该方法表示将首字母大写
print(v)

》》Alex


####################
#这两个方法都是将字符串所有变小写,casefold()更牛逼
test1="ALEX"
v1=test.casefold()
v2=test.lower()
print(v1,v2)

>>alex alex


###################
#这个方法相当于设置宽度,并将内容居中,20代表总长,‘%’代表填充物
v3=test.center(20,'%') print(v3) >>%%%%%%%%alex%%%%%%%% ################## #这个方法是计算当前字符串中寻找子序列个数 test4="dasdfgrtert" v4=test4.count('d',2,60)#‘d’为寻找目标,2和60表示从第2位开始,第60位结束 print(v4) >>1

#############################
#以什么结尾
#以什么开头
test5="alex"
v5=test5.endswith('s')
v6=test5.startswith('a')
print(v5)

》》False
》》True

################################
#这个方法表示从开始往后找,找到第一个之后,获取其位置
test6="alexalex"
v6=test6.find('ex',5,7)#返回-1则没找到,5,7表示[5,7)的前开后闭的区间中找
print(v6)

》》6

##############################
#格式化,将字符串中的占位符替换为指定的值
test7='i am {name},{age}'
print(test7)
v7=test7.format(name='alex',age=13)
print(v7)

》》i am {name},{age}
》》i am alex,13
test8='i am {0},{1}'
print(test8)
v8=test8.format('alex',13)
print(v8)

》》i am {0},{1}
》》i am alex,13

#格式化,传入的值{"name":'alsss',"age":19},相当于字典,"name"和"age"为键
v9=test7.format_map({"name":'alsss',"age":19})
print(v9)

》》i am alsss,19

########################
#判断字符串中是否只包含字母和数字
test10="asfer454r"
v10=test10.isalnum()
print(v10)

》》True
#expandtabs()相当于断句,
test="12345678\t9"
v=test.expandtabs(6)#6表示6个字符串为一句,\t表示空格,若出现\t则用空格补齐6个字符串
print(v,len(v))#len()表示字符串长度


》》12345678    9 13

test1="name\tage\tgender\nManuel\t25\tmale\nApril\t25\tfemale\n"
v1=test1.expandtabs(10)
print(v1)

》》
name      age       gender
Manuel    25        male
April     25        female

####################################
#isalpha()判断当前字符串是否是字母
#isdecimal()和isdigit()(更牛)和isnumeric()(最牛)判断当前字符串是否是数字
test2="rggds"
v2=test2.isalpha()
v3=test2.isdecimal()
v4=test2.isdigit()
v5=test2.isnumeric()
print(v2,v3,v4)

》》True False False False


###############################

#是否存在不可显示的字符
#\t   制表符
#\n 换行
test6="wertwet\twe"
v6=test6.isprintable()
print(v6)

》》False

isspace()#判断字符串内是否全是空格

istitle()#判断字符串是否是标题(所有单词首字母大写)

title()将输入转换为标题的格式

#jion()将字符串中的每一个元素按照指定分隔符进行拼接
test7="你是风儿我是沙"
t='_'
v7=t.join(test7)
print(v7)

》》你_是_风_儿_我_是_沙

ljust()、rjust()与center()类似,区别是将字符串放左边(右边),填充字符串放右边(左边)

islower()、isupper()判断字符串是否为小写、大写

lower()、upper()将字符串变成小写、大写

strip()、lstrip()、rstrip()去掉字符串所有、左边、右边的空格或换行符,括号内为去掉的参数(且参数子序列也可),默认为空格

#maketrans()建立对应关系,translate()利用对应关系替换
v8="sssdawrwq"
m=str.maketrans("sda","123")
v9=v8.translate(m)
print(v9)

》》11123wrwq
#以下方法都是分割
test10="twqedafsdwsewq"
m1=test10.partition('e')#只能将字符串分割成3份,遇到的第一个‘e’就分割,且保留‘e’
m2=test10.rpartition('e')#同上,但是是从右往左
m3=test10.split('e')#不保留‘e’,默认全部分割,再传个参数可以指定分割次数
m4=test10.rsplit('e',1)#同上,从右往左
print(m1)
print(m2)
print(m3)
print(m4)

》》('twq', 'e', 'dafsdwsewq')
》》('twqedafsdws', 'e', 'wq')
》》['twq', 'dafsdws', 'wq']
》》['twqedafsdws', 'wq']
#正则表达式中可以设置是否想要分割的元素,相当于上面两种方法的合集

#这个方法是根据换行符分割,True,False:指定是否保留换行符
test11='qwerer\nqweqw\nwafaef'
m5=test11.splitlines(True)
print(m5)

》》['qwerer\n', 'qweqw\n', 'wafaef']

startswith()、endswith()判断字符串是否以括号内参数开头或结尾

swapcace()大小写转换

replace()将字符串中指定字符或字符串用指定字符或字符串代替

test1="alexalexalexalexalex"
v1=test1.replace("ex","bbb",2)#2代表替换次数
print(v1)

》》albbbalbbbalexalexalex

 

6个基本方法:

jion()、spilt()、find()、strip()、upper()、lower()、replace()

黑科技:

1.索引,下标,获取字符串中的某一个字符

test='alex'
v0=test[0]
v1=test[1]
v2=test[2]
v3=test[3]
print(v0,v1,v2,v3)

》》a
》》l
》》e
》》x

#切片
v4=test[0:2]#表示从0到2,【0,2)前闭后开区间
print(v4)

》》al

############################
v5=len(test5)#获取当前字符串由几个字符组成
print(v5)

》》4

2.注:len()可用于其他数据类型,

li=[11,22,33,33]

print(len(li))#返回列表长度,用逗号分割

》》4

3.for i in      循环结构

test="python真的好简单"
i=0
while i<len(test):
    v=test[i]
    print(v)
    i+=1
print("#############")
》》p
y
t
h
o
n
真
的
好
简
单
#############

for i in test:
    print(i)


》》p
y
t
h
o
n
真
的
好
简
单

字符串一旦创建不可修改,一旦修改和拼接会在内存中重新创建新的字符串

 

 

3.布尔值 bool

4.列表 list

# list #类,列表
li = [1, 2, 9, "age", ["是正文", [19, 10]], 'wetrwe', True]  # 通过list类创建的对象,li
# 1.列表的格式:中括号括起来
# 用“,”分割每个元素
# 2.列表中可嵌套任何类型:列表中的元素可以是数字,字符串,列表,布尔值...所有的都能放进去
# "集合",内部放任何东西

# 3.索引取值
print(li[3])
# 4.切片取值,结果也是列表
print(li[0:-1])

# 5.for循环
for item in li:
    print(item)

列表在内存中是按链表的方式存储的,列表中元素存储不连续,但每个元素所占内存都存储了下一个元素的坐标。所以列表元素与字符串元素不同,可以被修改

#链表,
li = [1, 2, 9, "age", ["是正文", [19, 10]], 'wetrwe', True]
# 6.列表元素修改
# 索引方式修改 li[1]=15649 print(li) >>>[1, 15649, 9, 'age', ['是正文', [19, 10]], 'wetrwe', True]

# 切片方式修改
li[1:3]=[120,90]
print(li)

################
#删除列表元素
del li[1]
print(li)
# 7.切片方式删除
del li[2:5]
print(li)

################
# 8.in 操作
li = [1, 2, 9, "age", ["是正文", [19, 10]], 'wetrwe', True] 
v=120 in li
print(v)

v1="是正文" in li[4]
print(v1)
>>>False
>>>True

9.利用索引取值

li = [1, 2, 9, "age", ["是正文", [19, 10]], 'wetrwe', True]
#取出"19"
v=li[4][1][0]
print(v)

10.字符串转换为列表

#将字符串转换成列表,本质上去字符串中每一个元素进行for循环添加到列表中
s="wqrksldkfl"
new_s=list(s)
print(new_s)


>>>['w', 'q', 'r', 'k', 's', 'l', 'd', 'k', 'f', 'l']
#数字无法参与循环迭代,所以数字无法转换成列

11.将列表元素转换成字符串

#将列表元素转换成字符串
li=[11,22,33,"ww","rerd"]

v1=str(li)#将整个列表转换成字符串,相当于'[11,22,33,"ww","rerd"]'
print(v1)

>>>[11, 22, 33, 'ww', 'rerd']

v2=""
for i in li:
    v2+=str(i)
print(v2)

>>>112233wwrerd

#若列表中元素只有字符串,则可以用jion()方法
li_01=["fffwe","wqrewqr"]
v3="".join(li_01)
print(v3)

>>>fffwewqrewqr

基本方法:

1.append()

#1.追加append(),在原来值后面追加
li=[11,22,1315,4]
v=li.append(5)#相当于什么都不是
print(v)
print(li)

>>>None
>>>[11, 22, 1315, 4, 5]

li.append("saf")
li.append(['wqeqw',12346])
print(li)

>>>[11, 22, 1315, 4, 5, 'saf', ['wqeqw', 12346]]

2.clear()清空列表

3.复制,拷贝copy()

4.count(value)计算元素出现的次数

 #2.清空列表clear()li.clear()print(li)

>>>[]
#3.拷贝,浅拷贝,copy() s=li.copy() print(s)
>>>[11, 22, 1315, 4, 5, 'saf', ['wqeqw', 12346]]
#4.计算元素在列表中的个数count(Value) c=li.count(11) print(c)

>>>1

5.extend(iterable)扩展原来的列表,扩展元素必须是可迭代对象(字符串,列表等)

#5.extend(iterable)扩展原来的列表,扩展元素必须是可迭代对象(字符串,列表等)
li.extend(["wqewqe",657])
print(li)

>>>[11, 22, 1315, 4, 5, 'saf', ['wqeqw', 12346], 'wqewqe', 657]

与append()的区别:
li.append(["wqewqe",657])
print(li)

>>>[11, 22, 1315, 4, 5, 'saf', ['wqeqw', 12346], ['wqewqe', 657]]

###################
li.extend("不得了")
print(li)

>>>[11, 22, 1315, 4, 5, 'saf', ['wqeqw', 12346], '不', '得', '了']

li.append("不得了")
print(li)
>>>[11, 22, 1315, 4, 5, 'saf', ['wqeqw', 12346], '不得了']

6.index(Value,Start=None,End=None)

#6.index(Value,Start=None,End=None),根据值找索引
ind=li.index(22)
print(ind)

>>>1

7.insert(index,p_object)在指定索引位置插入指定元素

#7.insert(index,p_object)在指定索引位置插入指定元素
li.insert(0,'rrr4')
print(li)

>>>['rrr4', 11, 22, 1315, 4, 5, 'saf', ['wqeqw', 12346]]

8.pop(index)删除列表某个值(1.指定索引,2.默认是最后一个)并获取这个值

remove(Value)删除列表中的指定值,从左往右

ps:pop()  、 remove() 、 del list[0]  、del list[0:4]   、clear()

9.reverse()将当前列表反转

10.sort(key=None,reverse=False),列表的排序,cmp,key  欠

li=[11,66,55,55,2,44]
li.sort()
print(li)

>>>[2, 11, 44, 55, 55, 66]


li.sort(reverse=True)
print(li)

>>>[66, 55, 55, 44, 11, 2]

对象.方法,# li对象调用append方法 

补充:列表创建后可以通过索引取值和修改值,字符串创建后可以通过索引取值但不可修改值

li=[11,22,33,44]

li[0]=999

print(li)

>>>[999,22,33,44]

s="alexs"

print(s[0])

>>>a

列表是有序的,元素可以被修改

5.元组 tuple

#相当于对列表的二次加工,元组元素不可被修改,不能增加或删除

#tuple   类

tu=(111,222,"alex",(11,22,33),[0,1,2,3],True,5s5)

书写格式#一般写元组的时候,推荐在最后加入“,”,便于与方法区分

s="asf32 5we"
li=["y5rty","52"]
tu=("sgsdrrrt",['fff',456],526,)

v0=list(s)
print(v0)

v1=tuple(s)
print(v1)

v2=tuple(li)
print(v2)

v3=list(tu)
print(v3)

v4=str(li)
print(v4)

v5=str(tu)
print(v5)

#列表转换为字符串,当列表中只含有字符串时
l=["wrerewr","ewrewr","esadsad"]
v6="".join(l)
print(v6)

#元组转换为字符串,当元组中只含有字符串时
t=("ewrsgf","tryrty","241",)
v7="_".join(t)
print(v7)

>>>['a', 's', 'f', '3', '2', ' ', '5', 'w', 'e']

 >>>('a', 's', 'f', '3', '2', ' ', '5', 'w', 'e')
  >>>('y5rty', '52')
  >>>['sgsdrrrt', ['fff', 456], 526]
  >>>['y5rty', '52']
  >>>('sgsdrrrt', ['fff', 456], 526)
  >>>wrerewrewrewresadsad
  >>>ewrsgf_tryrty_241

 

#元组转换为字符串,当元组中不仅仅含有字符串时
s1=""
for i in tu:
    s1=s1+str(i)
print(s1)

>>>sgsdrrrt['fff', 456]526

元组也是有序的,元组的一级元素不可修改/删除/增加,但里面嵌套的列表可修改

#元组是有序的
tu=(123,5456,"asldw",[(545,555,)],True,3,4)
#找出555元素
print(tu[3][0][1])

>>>555

#####################
#元组的一级元素不可修改/删除/增加,但里面嵌套的列表可修改
tu[3].append(567)
print(tu)


>>>(123, 5456, 'asldw', [(545, 555), 567], True, 3, 4)

 

基本方法:

1.count()获取指定元素在元组中出现的次数

2.index()获取某个值的索引位置

6.字典 dict

#dict    类

1.字典的value可以是任何值

info={

  "k1":"v1",#键值对 

  "k2":"v2"}

#字典的value可以是任何值
info1={
    "k1":23,
    "k2":True,
    "k3":[11,22,22,{
        'kk1':'vv1',
        'kk2':'vv2',
        'kk3':(44,55,)
    }],
    "k4":(34,54,6,)
}
print(info)

>>>{'k1': 23, 'k2': True, 'k3': [11, 22, 22, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (44, 55)}], 'k4': (34, 54, 6)}

 2.列表和字典不能作为字典的key

#列表和字典不能作为字典的key
info2={
    123:'erwer',
    "k1":'rewr',
    (33,44,):'ertd',
    True:'fgf',
}
print(info2)

>>>{123: 'erwer', 'k1': 'rewr', (33, 44): 'ertd', True: 'fgf'}

3.字典是无序的

4.可以根据索引输入字典键值key获取对应的值,不可通过切片查找,因为无序

#获取‘ertd’
v2=info2[(33,44,)]
print(v2)

#获取'44'
v1=info1['k3'][3]['kk3'][0]
print(v1)

5.字典元素的删除

del info['k3'][3]['kk1'']

6.字典的for循环

#for循环
for item in info1:#默认获取key值
    print(item)

for item in info1.keys():
    print(item)

for item in info1.values():#获取value
    print(item)

for k,v in info1.items():#获取Key和value
    print(k,v)

基本方法

1.clear()删除

2.copy()复制,浅复制

@staticmethod 静态方法,支持直接写类名后带“.”可执行该功能如dict.fromkeys

3.dict.fromkeys()根据序列,创建字典,并指定统一的值

v=dict.fromkeys(["k1",123,"9990"],12345)
print(v)

>>>{'k1': 12345, 123: 12345, '9990': 12345}

4.get()

info={
    "k1":"v1"
}

a=info.get("k1",456478)#45678为默认若取不到相应的键值则返回的值
print(a)
b=info.get("rewrwer","wqerqwr")#若不传入值,则默认返回None
print(b)
>>>v1
>>>wqerqwr

5.pop(k,d=None),删除传入k值,返回当前删除的key值,当k不存在字典中时,返回d,默认为None

6.popitem(),删除字典中的值,返回键值对,默认返回元组类型,若k,v=popitem(),则返回两个值

a1=info.pop("k122",999)
print(a1)
print(info)

a2=info.popitem()
print(a2)
print(info)

a3,b3=info.popitem()
print(a3,b3)
print(info)

>>>999
>>>{'k1': 'v1', 'k2': 'v2'}
>>>('k2', 'v2')
>>>{'k1': 'v1'}
>>>k1 v1
>>>{}

7.setdefalt(k,d=None)在字典中设置值,若已存在,则获取当前key对应的值,若不存在则设置值并获取当前对应的值,

info={
    "k1":"v1",
    "k2":"v2"
}

a1=info.setdefault("k1",123)
print(info,a1)
a2=info.setdefault("rree",123)
print(info,a2)

>>>{'k1': 'v1', 'k2': 'v2'} v1

>>>{'k1': 'v1', 'k2': 'v2', 'rree': 123} 123

8.update(E=None,**F)***kwargs这种参数python将自动转换成相应的格式

info={
    "k1":"v1",
    "k2":"v2"
}

info.update({'k1':454,"k3":48478})
print(info)

info.update(k1=123,k3=48789,k4="erwr")
print(info)

>>>{'k1': 454, 'k2': 'v2', 'k3': 48478}
>>>{'k1': 123, 'k2': 'v2', 'k3': 48789, 'k4': 'erwr'}

 

总结

一、数字

int()

二、字符串

replace/fin/jion/strip/startwith/spilt/upper/lower/format

例:

template="I am {name},age:{19}"

v=template.formate(**{"name":"alex","age":19})

print(v)

三、列表

append/extend/insert

索引、切片、循环

四、元组

索引、切片、循环

一级元素不能被修改增加删除

五、字典

get/update/keys/values/items

for,索引

例:in在字典的用法

  dic={ "k1":"v1"}

  v="k1"in dic

  print(v)

六、布尔值

0 1 

bool()

0,None,“”,(),[ ],{ }都是False,其余都是True

 

 

补充:

enumrate(object,),为可迭代对象添加序号

li = [11,22,33]
for k,v in enumerate(li, 1):
    print(k,v)

>>>1 11
>>>2 22
>>>3 33

 

posted on 2019-02-28 18:36  Manuel  阅读(466)  评论(0编辑  收藏  举报