数据类型

总纲

Python中的所有数据类型都是对象

  1. 按简单和复杂分类
    简单类型:int、float、bool、string
    复杂类型:tuple、list、dict、set

  2. 按可变和不可变分类
    不可变对象:int、float、bool、string、tuple
    可变对象:list、dict、set

  3. 序列Sequence
    string、tuple、list
    可以通过序号访问序列中的每一项。
    序列都是有序的。
    相对的,dict、set都是无序的。而且dict和set中的键必须唯一。

int整型

  1. 运算
    // 整除
    % 取余
    ** 乘方
  2. 其它数据类型转换为int
int(3.4)  # 3
int(1.0e4)  # 10000
int(True)  # 1
int(False)  # 0
int('3')  # 3
int('3.4')  # 出错,int不能转换float字符串。

float浮点型

# 同int类型,而且可以转换float字符串。
float('3.4')  # 3.4

string字符串

  1. 基础
str(True)  # 'True' 将bool类型转换为字符串
'hello ' * 2  # 'hello hello '
  1. slice操作
letters = '123456'
letters[:]  # '123456'
letters[3:]  # '456'
letters[:4]  # '1234'
letters[2:4]  # '34'
letters[1:5:2]  # '24'
letters[-3:]  # '456'
letters[1:-2]  # '234'
letters[-4:-2]  # '34'
letters[-1::-1]  # '654321'
letters[::-1]  # '654321'
letters[-50:]  # '123456'
letters[:70]  # '123456'
  1. split、join、replace
letters = '1,2,3,4,5,6'
my_list = letters.split(',')  # ['1', '2', '3', '4', '5', '6']
','.join(my_list)  # '1,2,3,4,5,6'
letters.replace(',', ';') # '1;2;3;4;5;6'
letters.replace(',', ';', 2)  # '1;2;3,4,5,6'
  1. 查找操作
letters = '1, 2, 3, 4, 5, 6, 3, 7, 3'
letters.startswith('1,')  # True
letters.endswith('6')  # False
letters.find('3')  # 6
letters.rfind('3')  # 24
letters.count('3')  # 3
len(letters)  # 25
letters.isalnum()  # False
  1. 格式化
letters = 'hello, world!...'
new = letters.strip('.')  # 'hello, world!'
new.capitalize()  # 'Hello, world!'
title = new.title()  # 'Hello, World!'
new.upper()  # 'HELLO, WORLD!'
title.lower()  # 'hello, world!'
title.swapcase()  # 'hELLO, wORLD!'
new.center(30)  # '        hello, world!         '
new.ljust(30)  # 'hello, world!                 '
new.rjust(30)  # '                 hello, world!'

tuple元组

  1. 初始化
memeda = ()
memeda = (1,)
memeda = 1,
memeda = 1, 2, 3
  1. 将list转换为tuple
ori = ['a', 'b', 'c']
tuple(ori)  # ('a', 'b', 'c')
  1. 多变量同时赋值
memeda = ('a','b','c')
a, b, c = memeda
a # 'a'
b  # 'b'
c  # 'c'
  1. 交换两个变量的值
a = 'a'
b = 'b'
a, b = b, a
a  # 'b'
b  # 'a'

list列表

memeda = [1,2,3]
memeda.append(4)  # [1,2,3,4]
memeda.insert(2, 9)  # [1,2,9,3]
memeda.insert(10, 0)  # [1,2,3,0]
others = [3,4]
memeda.extend(others)  # [1,2,3,3,4]
memeda += others  # [1,2,3,3,4]
memeda.append(others)  # [1,2,3,[3,4]]
memeda = [1,2,3]
del memeda[-1]  # [1,2]
memeda.pop()  # [1,2]
memeda.pop(1)  # [1,3]
memeda.remove(2)  # [1,3]
memeda = [3,1,2,4] 
sorted(memeda)  # [1,2,3,4]且原memeda不变,仍为[3,1,2,4]
memeda.sort()  # [1,2,3,4]且原memeda变了。
memeda.sort(reverse=True)  # [4,3,2,1]
memeda = [1,2,3]
2 in memeda  # True
34 in memeda  # False
memeda.index(2)  # 1
len(memeda)  # 3
memeda = [1,2,3,4,4,4]
memeda.count(2)  # 1
memeda.count(4)  # 3
a = [1,2,3]
b = a
a[1] = 'hehe'
a  # [1, 'hehe', 3]
b  # [1, 'hehe', 3]
a = [1,2,3]
b = a.copy()
c = list(a)
d = a[:]
a[1] = 'hehe'
a  # [1, 'hehe', 3]
b  # [1,2,3]
c  # [1,2,3]
d  # [1,2,3]

dict字典

dict的键必须是不可变对象,即tuple也能做dict的键。

houses = {
    (44.79, -93.14, 285): 'My House',
    (38.89, -77.03, 13): 'The White House'
}
  1. 其它类型转换为dict
lol = [ ['a', 'b'], ['c', 'd'], ['e', 'f'] ]
dict(lol) # {'c': 'd', 'a': 'b', 'e': 'f'}
#
lot = [ ('a', 'b'), ('c', 'd'), ('e', 'f') ]
dict(lot) # {'c': 'd', 'a': 'b', 'e': 'f'}
#
los = [ 'ab', 'cd', 'ef' ]
dict(los) # {'c': 'd', 'a': 'b', 'e': 'f'}
#
tol = ( ['a', 'b'], ['c', 'd'], ['e', 'f'] )
dict(tol) # {'c': 'd', 'a': 'b', 'e': 'f'}
#
tol = ( ('a', 'b'), ('c', 'd'), ('e', 'f') )
dict(tol) # {'c': 'd', 'a': 'b', 'e': 'f'}
#
tos = ( 'ab', 'cd', 'ef' )
dict(tos) # {'c': 'd', 'a': 'b', 'e': 'f'}
kk = {'a': 1, 'b': 2, 'c': 3}
# del
del kk['b']  # {'a': 1, 'c': 3}
# clear
kk.clear()  # {}
# 直接赋值为{}
kk = {}  # {}
first = {'a': 1, 'b': 2}
second = {'b': 9, 'c': 3}
first.update(second)  # {'c': 3, 'a': 1, 'b': 9}
kk = {'a': 1, 'b': 2, 'c': 3}
# in
'a' in kk  # True
'z' in kk  # False
# get
kk.get('a')  # 1
kk.get('z')  # None
kk.get('z', 'nothing')  # nothing
# keys() values() items()
kk.keys()  # dict_keys(['a','b','c'])
list(kk.keys())  # ['a','b','c']
list(kk.values())  # [1,2,3]
list(kk.items())  # [('a',1),('b',2),('c',3)]
# copy()
save_kk = kk.copy()
save_kk['hehe'] = 'memeda'
save_kk  # {'hehe': 'memeda', 'a': 1, 'b': 2, 'c': 3}
kk  # {'a': 1, 'b': 2, 'c': 3}

set

# 新建一个set
empty_set = set()  # 由于{}符号被用来表示创建空的dict了,所以创建空的set只能用set()了

#  将其它类型转换为set
set('letters')  # {'l','e','t','r','s'}
set((1,1,3,3,5,7))  # {1,3,5,7}
set([1,1,3,3,5,7])  # {1,3,5,7}
set({'a': 1, 'b': 2, 'c': 3})  # {'a', 'c', 'b'}

even_numbers = {0, 2, 4, 6, 8} {0, 2, 4, 6, 8}
odd_numbers = {1, 3, 5, 7, 9} {1, 3, 5, 7, 9}

numbers = {
num1: {1,2,3},
num2: {2,3,4},
num3: {3,4,5},
num_odd: {1,3,5,7},
num_even: {0,2,4,6,8}
}

for name, contents in numbers.items():
if '3' in contents and not ('4' in contents or '5' in contents):
print(name)
结果:num1
等同于:
for name, contents in numbers.items():
if '3' in contents and not contents & {'4', '5'}:
print(name)
各种集合运算
a = {1, 2}
b = {2, 3}
交集
a & b {2}
a.intersection(b) {2}
并集
a | b {1, 2, 3}
a.union(b) {1, 2, 3}
前一个集合中存在,后一个集合中不存在
a - b {1}
a.difference(b) {1}
存在于任何一个集合中,但没有在两个集合中同时存在。
a ^ b {1, 3}
a.symmetric_difference(b) {1, 3}
子集测试、真子集测试
a <= b False
a.issubset(b) False
a <= a True
a.issubset(a) True
a < a False
父集测试、真父集测试
a >= b False
a.issuperset(b) False
a >= a True
a.issuperset(a) True
a > a False

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容