python基础数据类型二

数据类型:数字、字符串、列表、元组、字典、集合

一、数字int

数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以:

bit_length()将十进制转化为二进制占的位数
二进制             十进制
0000 0001            1
0000 0010            2
0000 0011            3
0000 0100            4
'''
i=3
j=4
print(i.bit_length())#>>>2
print(j.bit_length())#>>>3

 

二、布尔值bool

布尔值就两种:True,False。就是反应条件的正确与否。

2 数字与字符串转化
3 int ---> str : str(int)
4 str ---> int : int(str) str必须全部是数字组成 
5 布尔型与数字、字符串转化 6 int ---> bool:0 ---> False 非0 ---> True 
7 bool---> int :int(True)---> 1 int(False)---> 0 
8 str ---> bool:空字符串 ---> False 非空字符串---> True 
10 print(int(True))#>>>1
11 print(int(False))#>>>0
12 print(bool(''))#>>>False
13 print(bool('a'))#>>>True

三、字符串str

字符串的索引与切片。

1、索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。

1 s='Hello World!'
2 s1=s[0]#第一个元素
3 s2=s[-1]#最后一个元素
4 s3=s[-2]#倒数第二个元素
5 print(s1)#>>>H
6 print(s2)#>>>!
7 print(s3)#>>>d

 

2、切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾首不顾尾)。

s1=s[起始索引:结束索引:步长]

1 s='Hello World!'
2 s1=s[0:3]#从字符串的第1个字符到第3个字符进行切片
3 s2=s[:3]#0可以省略
4 s3=s[3:9]#从字符串的第4个字符到第9个字符进行切片
5 s4=s[:5:2]#从字符串的第1个字符到第5个字符进行切片,加步长2
6 s5=s[:]#把字符串全部取出来
7 s6=s[-1:-4:-1]#反向取字符串,加反向步长
8 print(s1)#>>>Hel
9 print(s2)#>>>Hel
10 print(s3)#>>>lo Wor
11 print(s4)#>>>Hlo
12 print(s5)#>>>Hello World!
13 print(s6)#>>>!dl

3、字符串常用方法

1)* captalize()  首字母大写

1 s='Hello World!'
2 s1=s.capitalize()
3 print(s1)#>>>Hello world!

2)***upper()  字母全部大写   lower() 字母全部小写

1 s='Hello World!'
2 s2=s.upper()
3 s3=s.lower()
4 print(s2)#>>>HELLO WORLD!
5 print(s3)#>>>hello world!
1 #例  验证码不区分大小写
2 code = 'QcaR'.upper()
3 your_code =input('请输入验证码:').upper()
4 if  your_code == code :
5     print('验证成功')

3)swapcase()  大小写翻转

1 s='Hello World!'
2 s1=s.swapcase()
3 print(s1)#>>>hELLO wORLD!

4)title()  非字母的元素隔开的每个单词首字母大写

1 msg='hello world_hello*world'
2 print(msg.title())#>>>Hello World_Hello*World

5)center() 内容居中,总长度自己设定,默认填充None

1 s='Hello World!'
2 s1=s.center(20,"*")
3 s2=s.center(20,)
4 print(s1)#>>>****Hello World!****
5 print(s2)#>>>    Hello World!

6)*** strartwith() 判断以什么为开头      *** endswith() 判断以什么为结尾

复制代码
1 s='Hello World!'
2 s1=s.startswith('H')
3 print(s1)#>>>True
4 s2=s.startswith('He')
5 print(s2)#>>>True
6 s3=s.startswith('e',1,5)#切片截取的字符串是否以‘e’为开头
7 print(s3)#>>>True
8 s4=s.endswith('!')
9 print(s4)#>>>True
复制代码

7)strip() 去除首尾的空格,制表符\t,换行符\n。不仅仅是去除空格

注:lstrip() 只除字符串左边的;rstrip() 只除字符串右边的;

复制代码
 1 s='   Hello World!   '
 2 ss='\tHello World!\n'
 3 s1=s.strip()
 4 print(s1)#>>>Hello World!
 5 s2=ss.strip()
 6 print(s2)#>>>Hello World!
 7 sss='tHello World!te'
 8 s3=sss.strip('t')#去掉字符串首尾的‘t’
 9 print(s3)#>>>Hello World!te
10 s4=sss.strip('tey')#迭代去除首尾的‘t’、‘e’、‘y’,无序
11 print(s4)#>>>Hello World!
复制代码
1 # 例  去除用户输入的空格
2 name = input('>>>').strip()
3 if name == 'oldboy':
4     print('验证成功')

 8)#split()  字符串 转化 列表

复制代码
 1 s='Hello World!'
 2 s1=s.split()
 3 print(s1)#>>>['Hello', 'World!']
 4 ss='He,llo Wo,rld!'
 5 s2=ss.split(',')
 6 print(s2)#>>>['He', 'llo Wo', 'rld!']
 7 sss='oHello World!'
 8 s3=sss.split('o')
 9 print(s3)#>>>['', 'Hell', ' W', 'rld!']
10 s4=sss.split('o',1)#通过o切割字符串,且只切第一个o
11 print(s4)#>>>['', 'Hello World!']
复制代码

9)join()  将列表 转化 字符串

注:如果列表里是非字符串元素,会报错

复制代码
s='Hello World!'
s1='+'.join(s)
print(s1)#>>>H+e+l+l+o+ +W+o+r+l+d+!
s2='_'.join(s)
print(s2)#>>>H_e_l_l_o_ _W_o_r_l_d_!
ss=['Hello','World','!']
s3='_'.join(ss)
print(s3)#>>>Hello_World_!
复制代码

 10)replace() 把字符串的旧字符串替换成新的字符串,如果指定第三个参数max,则替换不超过max次。

语法:str.replace(old,new[,max])

1 s='Hello World!'
2 s1=s.replace('W','w')
3 print(s1)#>>>Hello world!

11)find()  通过元素找索引     index()  通过元素找索引 找不到元素会报错

复制代码
1 s='Hello World!'
2 s1=s.find("e",1,6)
3 print(s1)#>>>1
4 s2=s.find("m",1,6)
5 print(s2)#>>>-1
6 s2=s.index("o",1,6)
7 print(s2)#>>>4
复制代码

12)format()   格式化输出

1 s1='我叫{},今年{}岁,爱好{}'.format('Lucy','18','羽毛球')
2 print(s1)#>>>我叫Lucy,今年18岁,爱好羽毛球
3 s2='我叫{0},今年{1}岁,爱好{2}'.format('Lucy','18','羽毛球')#可以按照索引进行替换
4 print(s2)#>>>我叫Lucy,今年18岁,爱好羽毛球

13)is系列

1 s='a123'
2 print(s.isdigit())#字符串由数字组成
3 print(s.isalpha())#字符串由字母组成
4 print(s.isalnum())#字符串由字母或数字组成

14)公共方法 :len()  返回对象的长度或项目个数; count() 数字字符串的元素出现的个数

1 s='hello world'
2 s1=len(s)
3 print(s1)#>>>11
4 s2=s.count("l",0,10)
5 print(s2)#>>>3

四、元祖tupe

元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")

五、列表list

列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:

li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]

列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。

1、增

 1 #append()  在最后追加元素,无返回值
 2 l1=[111,'aaa',222,'bbb']
 3 l1.append('123abc')
 4 print(l1)#>>>[111, 'aaa', 222, 'bbb', '123abc']
 5 #insert() 插入
 6 l2=[111,'aaa',222,'bbb']
 7 l2.insert(1,'ccc')
 8 print(l2)#>>>[111, 'ccc', 'aaa', 222, 'bbb']
 9 #extend 迭代着增加
10 l3=[111,'aaa',222,'bbb']
11 l3.extend('ddd')
12 print(l3)#>>>[111, 'aaa', 222, 'bbb', 'd', 'd', 'd']
13 l4=[111,'aaa',222,'bbb']
14 l4.extend(['333','444'])
15 print(l4)#>>>[111, 'aaa', 222, 'bbb', '333', '444']

2、删

1 #pop 按照索引删除,有返回值,增删改查中唯一一个有返回值的
 2 l1=[111,'aaa',222,'bbb']
 3 print(l1.pop(0))#>>>111
 4 print(l1)#>>>['aaa', 222, 'bbb']
 5 #remove
 6 l1=[111,'aaa',222,'bbb']
 7 l1.remove('aaa')
 8 print(l1)#>>>[111, 222, 'bbb']
 9 #clear 清空列表,删除内容,但是在内存中还占用空间
10 l1=[111,'aaa',222,'bbb']
11 l1.clear()
12 print(l1)#>>>[]
13 #del 内存级别删除列表
14 l1=[111,'aaa',222,'bbb']
15 del l1
16 print(l1)#报错,内存中删除列表
17 #del 按照元素删除
18 l1=[111,'aaa',222,'bbb']
19 del l1[1]
20 print(l1)#>>>[111, 222, 'bbb']
21 #del 切片删除
22 l1=[111,'aaa',222,'bbb']
23 del l1[:3]
24 print(l1)#>>>['bbb']

3、改

1 #按照索引去改
2 l1=[111,'aaa',222,'bbb']
3 l1[2]='ccc'
4 print(l1)#>>>[111, 'aaa', 'ccc', 'bbb']
5 #按切片去改  1.按切片的元素删除;2.按照添加的组成最小元素添加
6 l1=[111,'aaa',222,'bbb']
7 l1[:2]='abc'
8 print(l1)#>>>['a', 'b', 'c', 222, 'bbb']

4、查

1 li=[111,'aaa',222,'bbb']
 2 #按照索引去查
 3 print(li[1])#>>>aaa
 4 print(li[-1])#>>>bbb
 5 #按照切片查询
 6 print(li[:2])#>>>[111, 'aaa']
 7 print(li[:3:2])#>>>[111, 222]
 8 #循环for
 9 for i in li:
10     print(i)

5、其他方法

1 #count 计数
 2 l1=[111,'aaa',222,'bbb','aaa']
 3 print(l1.count('aaa'))#>>>2
 4 #len  返回对象的长度
 5 print(len(l1))#>>>5
 6 #通过元素找索引   列表中只有index
 7 print(l1.index('aaa'))#>>>1
 8 #排序
 9 # sort() 从小到大或从大到小排序
10 l1=[3,6,4,7,6,9,1,2,5,0]
11 l1.sort()#从小到大排序
12 print(l1)#>>>[0, 1, 2, 3, 4, 5, 6, 6, 7, 9]
13 l1.sort(reverse=True)#从大到小排序
14 print(l1)#>>>[9, 7, 6, 6, 5, 4, 3, 2, 1, 0]
15 #reverse 反向排序
16 l1=[3,6,4,7,6,9,1,2,5,0]
17 l1.reverse()
18 print(l1)#>>>[0, 5, 2, 1, 9, 6, 7, 4, 6, 3]

6、列表的嵌套

1 l1=[111,'aaa',222,'bbb',['ccc','ddd',10]]
 2 # 1.将aaa全部变成大写
 3 # 方法一
 4 l1[1]='AAA'
 5 print(l1)#>>>[111, 'AAA', 222, 'bbb', ['ccc', 'ddd',10]]
 6 # 方法二
 7 l1[1]=l1[1].upper()
 8 print(l1)#>>>[111, 'AAA', 222, 'bbb', ['ccc', 'ddd',10]]
 9 # 2.给['ccc','ddd']追加'eee'
10 l1[-1].append('eee')
11 print(l1)#>>>[111, 'aaa', 222, 'bbb', ['ccc', 'ddd',10, 'eee']]
12 # 3.将'ccc'首字母大写
13 l1[-1][0]=l1[-1][0].capitalize()
14 print(l1)#>>>[111, 'aaa', 222, 'bbb', ['Ccc', 'ddd',10]]
15 # 4.将10通过数字相加,或者字符串相加等等,变成‘100’
16 # 方法一
17 l1[-1][-1]=str(l1[-1][-1]+90)
18 print(l1)#>>>[111, 'aaa', 222, 'bbb', ['ccc', 'ddd', '100']]
19 # 方法二
20 l1[-1][-1]=str(l1[-1][-1])+'0'
21 print(l1)#>>>[111, 'aaa', 222, 'bbb', ['ccc', 'ddd', '100']]

六、字典dict

 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

  字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

1、增

# dic['li'] = ["a","b","c"]
# print(dic)
# setdefault 在字典中添加键值对,如果只有键那对应的值是none,但是如果原字典中存在设置的键值对,则他不会更改或者覆盖。
# dic.setdefault('k','v')
# print(dic)  # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'}
# dic.setdefault('k','v1')  # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'}
# print(dic)

2、删

# dic_pop = dic.pop("a",'无key默认返回值') # pop根据key删除键值对,并返回对应的值,如果没有key则返回默认返回值
# print(dic_pop)
# del dic["name"]  # 没有返回值。
# print(dic)

# dic_pop1 = dic.popitem()  # 随机删除字典中的某个键值对,将删除的键值对以元祖的形式返回
# print(dic_pop1)  # ('name','jin')

# dic_clear = dic.clear()  # 清空字典
# print(dic,dic_clear)  # {} None

3、改

# dic = {"name":"jin","age":18,"sex":"male"}
# dic2 = {"name":"alex","weight":75}
# dic2.update(dic)  # 将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中
# print(dic2

4、查

# value1 = dic["name"]  # 没有会报错
# print(value1)
# value2 = dic.get("djffdsafg","默认返回值")  # 没有可以返回设定的返回值
# print(value2)

5、其他操作

# item = dic.items()
# print(item,type(item))  # dict_items([('name', 'jin'), ('sex', 'male'), ('age', 18)]) <class 'dict_items'>
# 这个类型就是dict_items类型,可迭代的

# keys = dic.keys()
# print(keys,type(keys))  # dict_keys(['sex', 'age', 'name']) <class 'dict_keys'>

# values = dic.values()
# print(values,type(values))  # dict_values(['male', 18, 'jin']) <class 'dict_values'> 同上

6、字典循环

# dic = {"name":"jin","age":18,"sex":"male"}
# for key in dic:
#     print(key)
# for item in dic.items():
#     print(item)
# for key,value in dic.items():
#     print(key,value) 

七、其他(for,enumerate,range)

1、for循环:用户按照顺序循环可迭代对象的内容

msg = '老男孩python是全国范围内最好的python培训机构'
for item in msg:
    print(item)

li = ['alex','银角','女神','egon','太白']
for i in li:
    print(i)

dic = {'name':'太白','age':18,'sex':'man'}
for k,v in dic.items():
    print(k,v)

2、enumerate:枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值

li = ['alex','银角','女神','egon','太白']
for i in enumerate(li):
    print(i)
for index,name in enumerate(li,1):
    print(index,name)
for index, name in enumerate(li, 100):  # 起始位置默认是0,可更改
    print(index, name)

3、range:指定范围,生成指定数字

for i in range(1,10):
    print(i)

for i in range(1,10,2):  # 步长
    print(i)

for i in range(10,1,-2): # 反向步长
    print(i)

 

posted @ 2018-04-14 02:56  baibai01  阅读(157)  评论(0编辑  收藏  举报