1. 程式人生 > >python 文件交互 操作

python 文件交互 操作

獨立 解碼 大寫 多個 合並 long 增刪 弟弟 append

python2數據類型是有int和long區別的 type(2**32) int type(2**64) long
python3裏面是沒有long的概念的,長整型

大概理解
小數就是浮點數
科學計數法也是浮點數 E代表秘
52.3E4 52.3 x 10**4


布爾值
真和假
1和10

數據運算
and
or
not

in
not in

身份運算
is
is not

計算機中能表示的最小單位是一個二進制位
計算機中能存儲的最小單位是一個二進制位
bit

8bit= 1byte(字節)
1024byte=1kbyte
1024kbyte=1mbyte
1024mbyte=1gbyte

and or ^
128 64 32 16 8 4 2 1
0 0 1 1 1 1 0 0 = 60
0 0 0 0 1 1 0 1 = 13
and (都為真)
----------------------------------------
0 0 0 0 1 1 0 0 = 12
or(任意為真)
------------------------------------------
0 0 1 1 1 1 0 1 = 61
^(同時為真,同時為假 均非)
0 0 1 1 0 0 0 1 = 49

~(按位取反)
128 64 32 16 8 4 2 1
0 0 1 1 1 1 0 0 = 60
1 1 0 0 0 0 1 1 = 195 (-61)
結果是195-256 = -61 (按位取反結果就是這麽算的)

三元運算
>>> a,b,c=1,3,5
>>> d=a if a>b else c
>>> d
5
如果a>b d=a 否則 d=c

字符串轉換 二進制
encode str-->bytes
encode(編碼)

>>> ‘€20‘.encode(‘utf-8‘)
b‘\xe2\x82\xac20‘
>>> b‘\xe2\x82\xac20‘.decode(‘utf-8‘)
‘€20‘

20歐元,編碼,指定字符集,變成二進制
string - > byte
二進制,解碼,指定字符集,變成bytes
byte - >string

列表
範圍值 左閉又開 (顧頭不顧尾)
names = ["father","mother","xixi","hanhan"]
print(names)
print(names[0],names[3])
print(names[1:3]) # 左閉又開,取最左邊的數,到最右邊的數,不取最後邊的數)
#也叫 切片


增刪改查

#!/usr/bin/env python
#-*- coding:utf-8 -*-
# Author:summer_han
names = ["father","mother","xixi","hanhan"]
print(names)
print(names[0],names[3])
print(names[1:3])
print(names[3])
print(names[-1]) #取最後一個值
print(names[-2:]) #取最後二個值
print(names[0:]) #取所有值
print(names[1:]) #取第一個值向後所有值
print(names[:2]) #取錢兩個值

names.append("yeye") #加到最後
print(names[0:])

names.insert(4,"nainai")
print(names[0:])

names.insert(3,"nainai") #第三個位置插入
print(names)

names[3]="didi" #修改
print(names)

#刪除的方法
names.remove("didi") #刪除弟弟
print(names)

del names[-1] #刪除最後一個
print(names)

names.pop() #默認刪除最後一個,如果輸入位置則刪除相應位置
names.pop(1)
print(names)


#大列表,刪除某個人名字
print(names.index("father")) #打印位置
print(names[names.index("father")]) #既打印位置又打印名字,當有多個人物重名方便辨認

#統計某個人名有多少個
names.append("didi")
names.insert(1,"gege")
names.insert(2,"father")
#names.clear() #清空列表
names.reverse() #列表反轉
print(names)

print(names.count("father"))
names.sort() #列表排序 特殊符號在最前,然後數字,然後大寫,然後小寫,按照ascii順序排序的

names2=[1,2,3,4]
names.extend(names2) #把names2表合並過阿裏,names2還存在

print(names,names2)

del names2 #刪除變量names2
print(names,names2)


淺 copy:::
names=[‘didi‘, ‘father‘, ‘father‘, [‘sister‘,‘brother‘],‘gege‘, ‘hanhan‘, ‘mother‘, ‘xixi‘]

names2=names.copy()
print(names)
print(names2)

names[2]="爸爸"
names[3][0]="姐姐" #淺copy 在copy第二層的時候,copy的只是一個內存地址,不是實際數據
#所以當第二層數據改變的時候,內存地址的指向變了,copy的數據也就跟著變了
#同理 改names2的第二層 ,names的也會跟著改變

print(names)
print(names2)

names2[3][1]="哥哥"
print(names)
print(names2)


#如果想硬拷貝,數據不會跟著變,需要導入copy模塊
import copy
names=[‘didi‘, ‘father‘, ‘father‘, [‘sister‘,‘brother‘],‘gege‘, ‘hanhan‘, ‘mother‘, ‘xixi‘]

names2=copy.copy(names) #依然是淺copy
names2=copy.deepcopy(names) #深copy 完全獨立的數據,不會再隨著改變而改變
names[2]="爸爸"
names[3][0]="姐姐"

print(names)
print(names2)

names2[3][1]="哥哥"
print(names)
print(names2)
#
一般都用淺copy,因為深copy當列表過大時會占用兩份內存空間


#循環和切片步長
names=[‘didi‘, ‘father‘, ‘father‘, [‘sister‘,‘brother‘],‘gege‘, ‘hanhan‘, ‘mother‘, ‘xixi‘]
print(names[0:-1:2]) #從頭到尾,步長為2,顯示姓名
print(names[:-1:2]) #同上
for i in names:
print(i)


淺copy三種實現方式:
people=[‘name‘,[1,2,3,‘b‘]]
1、
import copy
p1=copy.copy(people)

2、
p2=people[:]

3、工廠函數
p3=list(person) ???p3=list(people[1:2])

淺copy什麽情況下非常有用:
夫妻共有存款案例
import copy
person=[‘name‘,[‘deposit‘,200]]
p1=person[:]
p2=person[:]
print(p1)
print(p2)

p1[0]="sujunfeng"
p2[0]="xiezhili"
print(p1)
print(p2)

p1[1][1]=50
print(p1)
print(p2)

python 文件交互 操作