python 基础三

数据类型

int

1,2,3用于计算

i = 100
print(i.bit_length())
'''
                  bit_length
1     0000 0001       1
2     0000 0010       2
3     0000 0011       2
View Code

一个十进制数字在二进制中需要几位。

bool

True,False 用于判断对错 

在数字中非0为真True,只有0为假False,

在str()中‘’ 为假 其他为真

 为什么 bool(0) 就是false bool(i) i = 0 就是True

 
ps:
while True:
    pass
while 1: 效率高
    pass
View Code

1的效率更高因为程序要把True转换成数字再执行一遍

str

存储少量数据进行操作 比如说密码

索引

s= 'ABCDEFG'

切片顾头不顾尾

s[:-1] 反向查找

s[3::-2] 从3开始反向查找

字符串操作

capitallize() : 首字母大写

upper(): 全部大写

lower():全部小写

swapcase():大小写翻转

title(): 每个单词首字母大写

center(20,'~') : 居中填补空白默认空格填补

replace('A','B',num)

s = '设计费大理石街坊来到了街坊说法第三方'
s11 = s.replace('街坊','老王')
print(s11)
View Code

 

startwith : 是否是以。。。开头

endwith: 是否是以。。。结尾

find : 找不到返回-1

index: 找不到报错

centre : 内容居中

strip/rstrip/lstrip : 两边消除 左右消除指定符号,默认为空格

count 计数

len() 长度

split() 将字符串转换成列表

join() 将列表转换成字符串

for i in 可迭代对象

  pass

format 的三种方式

{}: 

s = '我叫{},今年{},爱好{},再说一下我叫{}'.format('太白','36','girl','太白')
print(s)
View Code

{0}{1}{2}

name = input('>>>')
s = '我叫{0},今年{1},爱好{2},再说一遍我叫{0}'.format(name,36,'girl')
print(s)
View Code

{name}{age}{hobby}name = age + hobby

name = input('>>>')
s = '我叫{name} , 今年{age} , 爱好{hobby} , 再说一次我叫 {name}'.format(age=18,name=name,hobby='girl')
print(s)
View Code

 

list

可以存储大量的信息

li = ['alex',[1,2,3],'wusir','egon','女神','太白']
li.append('日天')
# 只能从最后面插入

li.insert(4,'春哥')
print(li)
# 指定顺序插入

li.ext
li.extend([1,2,3])
print(li)
# 可迭代对象
View Code

li = ['太白','alex','wusir','egon','女神']
name = li.pop(1)  # 从第一位删除
#pop()从最后一位删除 
print(name,li)

li = ['太白','alex','wusir','egon','女神']
lii = ['太白','alex','wusir','egon','女神']
li3 = ['太白','alex','wusir','egon','女神']
liiii = ['太白','alex','wusir','egon','女神']

#按元素清除
li.remove('太白')
print(li)

#全部清除
lii.clear()
print(lii)

#切片清除
del liiii[0:4]
print(liiii)
View Code

改与列表的嵌套

li.replace() 列表加函数只是返回值而不是直接修改列表,要用返回值直接等于索引

li = ['taibai','武藤兰','元昊',['alex','egon',89],23]

print(li[1][1])
name = li[0].capitalize()
print (name)
li[0] = name
li[0] = li[0].capitalize()
# li[0] = li[0].capitalize()
li[2] = '大白'
print(li[2].replace('大白','dada'))
li[2] = li[2].replace('大白','dada')
li[3][0] = li[3][0].upper()

print(li)
View Code

 

sort sort(reverse) 所有自己写的算法都没有原装的快

li = [1,2,3,4,5,6,7,8,9]

for i in li :
    print(i)
print(li[0:2])
View Code

 

元组

只读,不能增删改的列表。

但是元组的子元素是可以改的。

tu = (1,2,3,'alex',[2,3,4,'taibai'],'egon')
tu[4][3] = tu[4][3].upper()
tu[4].append('sb')
print(tu)
View Code

 tu1 = (1,) 是元组

tu2 = (1) 不是元组

dict

关系型列表,键值对

dict key 必须是不可变的数据类型 ‘abc’ , 123 可哈希 value: 任意数据类型

dict 优点: 二分查找去查询,存储大量的关系型数据

       缺点: 无序的

 dic = {
#     'name':['大猛','小孟'],
#     'py9':[{'num':71,'avg_age':18,},
#            {'num': 71, 'avg_age': 18, },
#            {'num': 71, 'avg_age': 18, },
#            ],
#     True:1,
#     (1,2,3):'wuyiyi',
#     2:'二哥',
# }
# print(dic)
View Code

dic1['high']  = 132

       键            值

如果键不错在直接在后面添加

如果存在直接更改

dic1.setdefault('键','值')

只会增加键,不会添加值 不写值的话

dic = dict.fromkeys([1,2,3],'春哥')
print(dic)

{1: '春哥', 2: '春哥', 3: '春哥'}

 

 

 dic1['high'] = 185  #没有键值对,添加
# dic1['age'] = 16  #如果有键,则值覆盖

# dic1.setdefault('weight')  # 有键值对,不做任何改变,没有才添加。
# dic1.setdefault('weight',150)
# dic1.setdefault('name','二哥')
# print(dic1)
View Code

 

dic.pop.('键') 删除键值对

dic.pop('键',None)

dic.popitem() 随机删除

dic.clear() 清空字典

dic [键] = 值

dic2.update(dic1) 把dic1的值添加到dic2

# dic1['age'] = 16

# dic = {"name":"jin","age":18,"sex":"male"}
# dic2 = {"name":"alex","weight":75}
# dic2.update(dic)  #
#
# print(dic)
# print(dic2)
View Code

dic.keys() 键 dic.values 值 dic.items() 键值对

# for i in dic1:
#     print(i)
# for i in dic1.keys():
#     print(i)

# for i in dic1.values():
#     print(i)
View Code

for k,v in dic1.items():

  print(k,v) 

嵌套

dic = {
    'name':['alex','wusir','taibai'],
    'py9':{
        'time':'1213',
        'learn_money':19800,
        'addr':'CBD',
           },
    'age':21
}

# l = [1,2,'wusir']
# l[2] = l[2].upper()
# dic['name'][1] = dic['name'][1].upper()
# print(dic)

#female : 6
# dic['py9']['female'] = 6
# print(dic)
View Code

 

 

集合

可变数据类型,里面的元素是不可变的数据类型且不可重复

{1,2,3,‘asdf’}

 增

set1.add('内容') 整体添加

set1.update(“内容”)可迭代添加且无序

set1 = set({'dsfdsf',123,34324,3234})
set1.update('234')
print(set1)

{3234, '2', '4', '3', 'dsfdsf', 34324, 123}
View Code

set1.pop()随机删除

set1.remove() 按元素删除

set1.clear() 清空

交集

set1 & set2 

set1.intersection(set2) 

包含

set2 > set1

共有的

set1^set2

独有的

set1 - set2

去重

li = [1,2,33,33,2,1,4,5,6,6]
# set1 = set(li)
# # print(set1)
# li = list(set1)
# print(li)
View Code

 

range

range相当于一个数字列表 [1,2,3,.....,100]

# for i in range(0,10,3):
#     print(i)
# for i in range(10,0,-2):
#     print(i)
li = [1,2,3,5,'alex',[2,3,4,5,'taibai'],'afds']
# for i in li:
#     if type(i) == list:
#         for k in i:
#             print(k)
#         else: print(i)
for i in range(len(li)):
    if type(li[i]) == list:
        for j in li[i]:
            print(j,11)
    else:print(li[i],2)
        
View Code

 

 值互换

a = 1 b = 2 

a,b = b,a

小数据池

数字,字符串 小数据池
#数字的范围 -5 -- 256
#字符串:1,不能有特殊字符
#        2,s*20 还是同一个地址,s*21以后都是两个地址
# i1 = 6
# i2 = 6
# print(id(i1),id(i2))
# i1 = 3
# i2 = 3
# print(id(i1),id(i2))
View Code

两个变量名用同一个地址,str,int在一定范围内

 编码

在python的内存中所有变量都是unicode 32位 要想存储就要转化成utf-8 24位,gbk 16位 所以就要encode编码

把str 编程 byte类型 b

b 只能转化英文不能转化中文

s = 'alex'
# s1 = b'alex'
# print(s,type(s))
# print(s1,type(s1))

# s = '中国'
# print(s,type(s))
# s1 = b'中国'
# print(s1,type(s1))

s1 = 'alex'
# encode 编码,如何将str --> bytes, ()
s11 = s1.encode('utf-8')
s11 = s1.encode('gbk')
print(s11)
s2 = '中国'
s22 = s2.encode('utf-8')
s22 = s2.encode('gbk')
print(s22)

File "<ipython-input-5-b82dad48c344>", line 8
    s1 = b'中国'
         ^
SyntaxError: bytes can only contain ASCII literal characters.



b'alex'
b'\xd6\xd0\xb9\xfa'
View Code

深浅copy

浅; 当 l2 复制 l1 时 里面的可变数据和不可变数据都是共有的 数据类型

int

1,2,3用于计算

 

View Code

一个十进制数字在二进制中需要几位。

 

bool

True,False 用于判断对错 

 

在数字中非0为真True,只有0为假False,

 

在str()中‘’ 为假 其他为真

 

 为什么 bool(0) 就是false bool(i) i = 0 就是True

 

 View Code

1的效率更高因为程序要把True转换成数字再执行一遍

 

str

存储少量数据进行操作 比如说密码

 

索引

s= 'ABCDEFG'

 

切片顾头不顾尾

 

s[:-1] 反向查找

 

s[3::-2] 从3开始反向查找

 

字符串操作

capitallize() : 首字母大写

 

upper(): 全部大写

 

lower():全部小写

 

swapcase():大小写翻转

 

title(): 每个单词首字母大写

 

center(20,'~') : 居中填补空白默认空格填补

 

replace('A','B',num)

 

View Code

 

 

startwith : 是否是以。。。开头

 

endwith: 是否是以。。。结尾

 

find : 找不到返回-1

 

index: 找不到报错

 

centre : 内容居中

 

strip/rstrip/lstrip : 两边消除 左右消除指定符号,默认为空格

 

count 计数

 

len() 长度

 

split() 将字符串转换成列表

 

join() 将列表转换成字符串

 

for i in 可迭代对象

 

  pass

 

format 的三种方式

 

{}: 

 

View Code

{0}{1}{2}

 

View Code

{name}{age}{hobby}name = age + hobby

 

View Code

 

 

list

可以存储大量的信息

 

 

View Code

 

View Code

改与列表的嵌套

 

li.replace() 列表加函数只是返回值而不是直接修改列表,要用返回值直接等于索引

 

View Code

 

 

sort sort(reverse) 所有自己写的算法都没有原装的快

 

 

View Code

 

 

元组

只读,不能增删改的列表。

 

但是元组的子元素是可以改的。

 

View Code

 tu1 = (1,) 是元组

 

tu2 = (1) 不是元组

 

dict

关系型列表,键值对

 

dict key 必须是不可变的数据类型 ‘abc’ , 123 可哈希 value: 任意数据类型

 

dict 优点: 二分查找去查询,存储大量的关系型数据

 

       缺点: 无序的

 

View Code

dic1['high'] = 132

 

       键 值

 

如果键不错在直接在后面添加

 

如果存在直接更改

 

dic1.setdefault('键','值')

 

只会增加键,不会添加值 不写值的话

 

dic = dict.fromkeys([1,2,3],'春哥')

print(dic)

 

{1: '春哥', 2: '春哥', 3: '春哥'}

 

 

 

 

View Code

 

 

dic.pop.('键') 删除键值对

 

dic.pop('键',None)

 

dic.popitem() 随机删除

 

dic.clear() 清空字典

 

dic [键] = 值

 

dic2.update(dic1) 把dic1的值添加到dic2

 

View Code

dic.keys() 键 dic.values 值 dic.items() 键值对

 

View Code

for k,v in dic1.items():

 

  print(k,v) 

 

嵌套

View Code

 

 

 

集合

可变数据类型,里面的元素是不可变的数据类型且不可重复

 

{1,2,3,‘asdf’}

 

 增

set1.add('内容') 整体添加

 

set1.update(“内容”)可迭代添加且无序

 

View Code

set1.pop()随机删除

 

set1.remove() 按元素删除

 

set1.clear() 清空

 

交集

 

set1 & set2 

 

set1.intersection(set2) 

 

包含

 

set2 > set1

 

共有的

 

set1^set2

 

独有的

 

set1 - set2

 

去重

 

View Code

 

 

range

range相当于一个数字列表 [1,2,3,.....,100]

 

View Code

 

 

 值互换

a = 1 b = 2 

 

a,b = b,a

 

小数据池

View Code

两个变量名用同一个地址,str,int在一定范围内

 

 编码

在python的内存中所有变量都是unicode 32位 要想存储就要转化成utf-8 24位,gbk 16位 所以就要encode编码

 

把str 编程 byte类型 b

 

b 只能转化英文不能转化中文

 

View Code

深浅copy

浅; 当 l2 复制 l1 时 里面的可变数据和不可变数据都是共有的,一个变另一个跟着变。 

 1 l1 = [1,2,[4,5,6],3]
 2 l2 = l1
 3 print(l1,id(l1))
 4 print(l2,id(l2))
 5 l1.append('ass')
 6 print(l1,l2)
 7 print(id(l1[2]))
 8 print(id(l2[2]))
 9 
10 [1, 2, [4, 5, 6], 3] 2804444955968
11 [1, 2, [4, 5, 6], 3] 2804444955968
12 [1, 2, [4, 5, 6], 3, 'ass'] [1, 2, [4, 5, 6], 3, 'ass']
13 2804445146304
14 2804445146304
View Code

 

深: 当l2复制l1时 里面的可变数据是私有的也就是说会存到不同的地址,二不可变数据则是共有的 也就是存在相同的地址。

import copy
l1 = [1,2,[4,5,6],3]
l2 = copy.deepcopy(l1)
print(l1,id(l1))
print(l2,id(l2))
l1[2].append('a')
print(l1,id(l1[2]),l2,id(l2[2]))

[1, 2, [4, 5, 6], 3] 2804445220032
[1, 2, [4, 5, 6], 3] 2804445759360
[1, 2, [4, 5, 6, 'a'], 3] 2804445234048 [1, 2, [4, 5, 6], 3] 2804444955968
View Code

 

posted @ 2020-10-09 15:26  罗杰linux云计算  阅读(82)  评论(1)    收藏  举报