[TOC]
數據類型
字符編碼:
我們通常還是用GBK指代中文windows內碼
usf-8是對編碼的壓縮和優化,在編寫python的時候需要聲明給python解釋器(說了python是解釋型語言),使用什么編碼來執行源代碼:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
注釋:
單行注釋#
多行注釋 ``` ```
用戶輸入:
input()
需要限制輸入類型的時候,在input外面套接一個數據類型例如int(input())
輸入密碼時,如果想要不可見,需要利用getpass
模塊中的getpass
方法:
import getpass
pwd = getpass.getpass('enter your pwd:')
數據類型
在這里穿插解釋數據類型
數字
int
整型
long
長整型:在python2.2以后的版本里,python在長整數據后面不加L也不會有太大的問題
float
浮點型
complex
復數布爾值
真/假字符串
'hello world'
- 字符串的格式化輸出
name = 'scott'
print('i am %s'%name)
#字符串是%s ; 整數%d ; 浮點數 %f
- 字符串操作方法:
print(name.strip()) #脫
print(name.split()) #分割
print(name.len()) #長度
print(name.index('s')) #索引
name1 = 'scott,jack,jerry'
print(name[0:4])
#輸出結果為‘scot’
#說明python切片的一條規則
#**顧頭不顧尾**
#范例:
print(name [-6:])
print(name [-6:1])
print(name [0::3]) #隔幾個字符取一次
列表和字典
list列表
- 定義列表
>>> name = ['scott','jack','jerry','peter']
- 添加元素(append)
>>> name.append('super')
>>> name
['scott', 'jack', 'jerry', 'peter', 'super']
- 定位添加元素(insert)
>>> name.insert(2,'alex')
>>> name
['scott', 'jack', 'alex', 'jerry', 'peter', 'super']
- 定位刪除元素
>>> name.pop(3)
'jerry'
>>> name
['scott', 'jack', 'alex', 'peter', 'super']
不添加參數,默認刪除最后一個
>>> name.pop()
'super'
- 在列表中定位元素位置
>>> name.count('jack')
1
list的深淺拷貝
## 計算結果以及為什么?
a = [1, 2, [3, "hello"], {"egon": "aigan"}]
# 形參a指向一塊儲存列表的內存位置
b = a[:]
# 形參b指向相同的位置
a[0] = 5
# 原本a的列表修改了某個值,a指向別的內存地址,該地址存儲著新的列表
# a修改了某個一層列表元素的位置,b不受影響
a[2][0] = 666
# a修改了某個二層列表元素的位置,b受到影響
print(a)
print(b)
# 知識點:深淺拷貝,b = a[:]讓b獲得了a的值,但是二者并不公用一塊內存地址
# 但是兩個列表中的二級列表,指向的是同一塊內存地址,
# 所以當兩個列表中,一級元素發生改變的時候,互不影響,但當二級元素發生改變的時候,二者同時發生變化。
# 有用于強制深拷貝的模塊
dict 字典
key Value 鍵值
key 必須唯一
- 字典為什么是無序的?
name= {
9527:{'name':'scott','age':23},
9528:{'name':'jack','age':24},
9529:{'name':'jerry','age':22},
9530:{'name':'peter','age':22}
}
取值
print(name[9527]['age'])
增
name[9526] = 'yage'
刪
print(name.pop(9526)) #---會返回他的值
print(name.popitem()) #---隨機刪除一個
改
修改某個字典元素
name[9528][0] = 'super jack'
在某個字典中增加一個數字
name[9529].append(28)
- 查
print(name.get(9527))
print(9527 in name)
print(name.keys())
print(name.values())
- loop
- 只打印key
for i in name: print(i)
for i in name.items(): print (i)
for k,v in names.items(): print(k,v)
- 更新
dict2 = {
9523:{'name':'sco','age':23}
9524:{'name':'jac','age':24}
9525:{'name':'jer','age':22}
9536:{'name':'pet','age':22}
}
.update()
如果dict.update(dict2)
如果dict2中有dict已經有的鍵值,就更新覆蓋該鍵值