2018-03-01

day03-数据类型,类型转换,运算符

一、数据类型

列表类型(有序的数据的集合)

定义: 使用[] 定义一个列表 。列表里面的值可以是

1.定义一个空列表 []
2.下标可以读取列表值  classList[0]
3.也有同字符串的切片截取 eg:classList[:3] #截取下标3之前的数据
4.也有同字符串相同的'+' 和 '*''
5.列表也可以对称赋值[num1,num2] = [10, 20]
6.判断元素是否存在print('asd' in classList)
# --------------------------------------------------------------------------------
# 列表
classList = ['张三','李四','王五','a']
print(type(classList)) #<class 'list'>
print(len(classList)) # 4
print(len('1234')) # 4 ?
print(type('1234')) # <class 'str'>

# 列表的切片
classList = [1,2,3,4,5,6,7,8,9,0]
print(classList[:3]) #[1, 2, 3]
print(classList) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
# 列表翻转函数
print(classList[::-1]) #[0, 9, 8, 7, 6, 5, 4, 3, 2, 1]
print(classList) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(classList.reverse()) #None
print(classList) #[0, 9, 8, 7, 6, 5, 4, 3, 2, 1]
# 列表的元素相加
print(classList + classList)#[0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 9, 8, 7, 6, 5, 4, 3, 2, 1]
# 列表元素的重复
print(classList*1)#[0, 9, 8, 7, 6, 5, 4, 3, 2, 1]

# --------------------------------------------------------------------------------
classList = ['A','B','C','D','E','F']
# 修改列表某元素
classList[0] = '*'
print(classList)#['*', 'B', 'C', 'D', 'E', 'F']
# classList[100] = '&'  #越界,报错
print(classList)#['*', 'B', 'C', 'D', 'E', 'F']

# 删除指定的元素
del classList[0]
print(classList)#['B', 'C', 'D', 'E', 'F']

# 删除列表
del classList
# print(classList[0])  #  NameError: name 'classList' is not defined

classList = ['A','B','C','D','E','F']
# 删除前两个元素
# print('mask')
print(classList)
classList[:2] = []
print(classList) #['C', 'D', 'E', 'F']
print('\n'*2)

# 互换两个元素
num1 = 10;   num2 = 20
print(num1,num2) #10 20
[num1,num2] = [num2,num1]
print(num1,num2) #20 10
print('\n'*2)

# 查找一个元素是否在列表里
classList = ['A','B','C','D','E','F']
print('A' in  classList)# 返回bool值 #True
print('\n'*2)

# 查找列表里的最大值
classList = ['A','B','C','D','E','F']
print(max(classList)) #F
print(min(classList)) #A
print('\n'*2)
# 统计某元素出现的次数
myList = ['a','b', 'c','d','s','a','a']
print(myList.count('a')) #3
print('\n'*2)

# 列表中追加值
myList.extend('值')
myList.extend(['金','银'])
print(myList)#['a', 'b', 'c', 'd', 's', 'a', 'a', '值', '金', '银']
print('\n'*2)

# 插入值 并且指定位置(下标)要填充的值
myList = ['0','1','2','3']
print(myList)#['0', '1', '2', '3']
myList.insert(0,'A')
print(myList)#['A', '0', '1', '2', '3']
myList.insert(0,['m','n'])
print(myList)#[['m', 'n'], 'A', '0', '1', '2', '3']
print('\n'*2)

# 将最后一个值弹出
myList = ['1','2','3','4']
myList.pop()
print(myList)#['1', '2', '3']
# 将指定位置的值弹出
myList.pop(0)
print(myList)#['2', '3']
print('\n'*2)

# 移除第一个匹配上的元素
myList = ['1','2','3','4','2','2','2']
myList.remove('2')
print(myList)#['1', '3', '4', '2', '2', '2']

# 清空列表
myList = ['1','2','3','4','2','2','2']
myList.clear()
print(myList)#[]
print('\n'*2)

# 列表追加值
myList = ['a']
myList.append('b')
print(myList)#['a', 'b']
print(myList.index('a'))#0
# print(myList.index('z')) # 不存在就报错了
print('\n'*2)

# 升序排列列表
myList = [9,2,73,4,72,8]
myList.sort()
print(myList)#[2, 4, 8, 9, 72, 73]
print('\n'*2)

# 翻转列表
myList = [54,57,8,9,5,23,4,5,76,1]
myList.reverse()
print(myList)#[1, 76, 5, 4, 23, 5, 9, 8, 57, 54]
print('\n'*2)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/3/1 13:34
# @Author  : PXQL
# @Site    : 
# @File    : 
# @Software: PyCharm Community Edition
# =====================================================
# 深、浅 拷贝  <>


import copy


# # 深拷贝 浅拷贝
# num1 = 5
# num2 = num1
# num2 = 10
# print(id(num1))
# print(id(num2))
# print('\n'*2)


# 在 python 里不是以变量来存储地址 而是以内容 相同内容指向一个地址
# 浅拷贝指向一个地址
myList = [1,2,3,4,5,6,7,8,9]
myList2 = myList
print(id(myList))#1993309771656
print(id(myList2))#1993309771656
myList2[0] = 'a'
print(id(myList))#1993309771656
print(id(myList2))#1993309771656
print('\n'*2)


# 深拷贝 真正意义的拷贝
myList3 = ['a','b','c','d','e']
myList4 = myList3.copy()
myList4[0] = '1'
print(id(myList3))#1993309771848
print(id(myList4))#1993309773128
print(myList3)#['a', 'b', 'c', 'd', 'e']
print(myList4)#['1', 'b', 'c', 'd', 'e']
print('\n')


## copy 模块里的 copy.copy 仅仅是拷贝了一层,也叫做浅拷贝
myList5 = ['a','b','c','d','e',['0','1','2']]
myList6 = myList5.copy()
myList6[5][0] = 'G'
print(id(myList5));
print(myList5)
print(id(myList6));
print(myList6)
print('\n')
# --- 打印结果 ---
# 2612034362568
# ['a', 'b', 'c', 'd', 'e', ['G', '1', '2']]
# 2612034362504
# ['a', 'b', 'c', 'd', 'e', ['G', '1', '2']]


myList = ['1','a','f']
myList2 = copy.copy(myList)
myList[0] = 'd'
print(myList)
print(myList2)
print('\n')
# --- 打印结果 ---
# ['d', 'a', 'f']
# ['1', 'a', 'f']
# --- 打印结果 ---

myList = ['1','a','f',['df','fg']]
myList2 = copy.copy(myList)
myList[3][0] = 'd'
print(myList)
print(myList2)
print('\n')
# --- 打印结果 ---
# ['1', 'a', 'f', ['d', 'fg']]
# ['1', 'a', 'f', ['d', 'fg']]
# --- 打印结果 ---


# 深拷贝  真正字面意义上的拷贝
myList = ['1','a','f',['df','fg']]
myList2 = copy.deepcopy(myList)
myList[3][0] = 'www'
print(myList)
print(myList2)
print('\n')
# --- 打印结果 ---
# ['1', 'a', 'f', ['www', 'fg']]
# ['1', 'a', 'f', ['df', 'fg']]
# --- 打印结果 ---


values = [1,2,3]
values[1] = values
# 打印 [1, [...], 3]  打印的结果,说明了 (values[1] = values)没有赋值,只是设置了引用
print(values)


values = []
values = [1,2,3]
values[1] = values[:]
# 打印 [1, [1, 2, 3], 3]
print(values)

#  python 里的对象复制  只有三种 切片、深拷贝、浅拷贝

元组


# Python的元组与列表类似,不同之处在于元组的元素不能修改。
# 元组使用小括号,列表使用方括号。
# 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

tuple1 = (1,2,3)
print(type(tuple1))
tuple2 = ('dsds',"iueriwur564",5466,1.6889,7+8)
tuple3 = '1','2','3','4',"5",45,23,1010
print(type(tuple3))
# --- 打印结果 ---
# <class 'tuple'>
# <class 'tuple'>
# --- 打印结果 ---

# 创建空的元组
tup = ()
print(type(tup))
# --- 打印结果 ---
# <class 'tuple'>
# --- 打印结果 ---

# 元组中只包含一个元素时,需要在元素后面添加逗号
tup1 = (2)
print(type(tup1))
tup1 = (2,)
print(type(tup1))
# --- 打印结果 ---
# <class 'int'>
# <class 'tuple'>
# --- 打印结果 ---

# 元组的值是不能进行修改的
tup1 = (1,2,3)
# tup1[0] = 45  # 将要报错,原因是不能修改元组的值
print(tup1)
# 元组的值不能修改,但是元组内部包含其他层的嵌套的时候,我们可以修改嵌套的值,原因是其它层在这里只是存储的地址
tup2 = (1,4,5,['a','b'])
print(tup2)
tup2[-1][0] = 'http://www.baidu.com'
print(tup2)
# --- 打印结果 ---
# (1, 4, 5, ['a', 'b'])
# (1, 4, 5, ['http://www.baidu.com', 'b'])
# --- 打印结果 ---

#可以根据下标取值  也可以下标切片截取 与字符串和列表一样
#也有+ 和 *
tup1 = (1,2)
tup2 = (3,4)
print(tup1+tup2)
print(tup1*2)
# --- 打印结果 ---
# (1, 2, 3, 4)
# (1, 2, 1, 2)
# --- 打印结果 ---

# del tuple1 #不可以删除指定下标值  可以直接干掉所有的
tup1 = (1,2)
# del tup1[0]  # 报错
del tup1
# print(tup1) # 报错


#判断元素是否存在于元组中
# print(3 in tuple1)

tup1 = (1,2,3)
print(3 in tup1)
print(100 in  tup1)
# --- 打印结果 ---
# True
# False
# --- 打印结果 ---

集合


# 描述
# set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
# 语法
# set 语法:
# class set([iterable])
# 参数说明:
# iterable -- 可迭代对象对象;

# set() 函数创建一个无序不重复元素集就叫做 集合


set1 = {4}
print(type(set1)) #<class 'set'>

#  是定义一个空字典
set1 = {}
print(type(set1)) #<class 'dict'>

#  是定义一个空集合
set1 = set()
print(type(set1)) #<class 'set'>

# 不重复的序列
set1 = {1,1,2}
print(set1)

# 将列表里的去重
myList = [1,1,3,4,5,6,6,6,6,7,7]
set2 = set(myList)
print(set2)

# 集合的运算
set1 = {'a','b','c'}
set2 = {'a','d','e','f','g','h'}
# 取差值
set3 = set1 - set2
print(set3) #{'b', 'c'}
# 取并集
print(set1|set2) #{'f', 'd', 'b', 'e', 'h', 'g', 'c', 'a'}
# 取交集
print(set1&set2) #{'a'}
# 不同时存在的
print(set1^set2) #{'e', 'b', 'h', 'd', 'c', 'f', 'g'}

# 不能使用下标 没有 + *
set4 = {1,2,3,4,5}
print(set4)#{1, 2, 3, 4, 5}

字典


#字典类型 是有 key->value的形式组成  并且查找速度极快
#定义  {}
#key是由字符串和整数 组成
# 键值成对出现 key是唯一的

dict = {'name':'张三','age':18}
dict2 = {'address':"河南省郑州",'phone':'17718889999'}
# dict3 = dict + dict2  # 报错,字典不能相加 ,但是可以 更新 uppdate
dict3 = dict.update(dict2)
print(dict3)  # None  dict.update(dict2) 执行后返回了 None
print(dict)  #  {'name': '张三', 'age': 18, 'address': '河南省郑州', 'phone': '17718889999'}

dict =  {'name': '张三', 'age': 18, 'address': '河南省郑州', 'phone': '17718889999'}
# 长度 是 键值对的个数
print(len(dict))  # 4
# 查找值
print(dict["address"])  # 河南省郑州
dict4 = {110:'No'}
# 把 dict4 合并到 dict 里; dict4 重复的 key 的 value 会将 dict 里的 key 的 value 覆盖掉
dict.update(dict4)
print(dict) #{'name': '张三', 'age': 18, 'address': '河南省郑州', 'phone': '17718889999', 110: 'No'}
dict4 = {110:"YES"}
dict.update(dict4)
print(dict) #{'name': '张三', 'age': 18, 'address': '河南省郑州', 'phone': '17718889999', 110: 'YES'}
#  如果为没有的 key 赋值 value 则会先将 key 插入,然后再赋值 value
dict['safe'] = 'YES'
print(dict) #{'name': '张三', 'age': 18, 'address': '河南省郑州', 'phone': '17718889999', 110: 'YES', 'safe': 'YES'}





二、类型转换

str1 = str(10.45)
str2 = float('100')
print(str1)#10.45
print(str2)#100.0


set2 = set('12.5465665')
print(set2)#{'5', '2', '1', '4', '.', '6'}
print('\n'*2)


t1 = ('张华','李白','小乔','大乔')
classList = list(t1)
tup = tuple(t1)
print(t1);#('张华', '李白', '小乔', '大乔')
print(type(t1))#<class 'tuple'>
print(classList);#['张华', '李白', '小乔', '大乔']
print(type(classList))#<class 'list'>
print(tup);#('张华', '李白', '小乔', '大乔')
print(type(tup))#<class 'tuple'>

# 将列表转为 字典 <注意格式>
list1 = [('name','张三'),('age',18)]
dic = dict(list1)
print(dic)#{'name': '张三', 'age': 18}
print(type(dic))#<class 'dict'>
list2 = ['a','b','c','d']
# dic = dict(list2) #报错 格式错误 不可以转


# 将集合转为 字典 <注意 格式>
set1 = {('name','张三'),('age',18),('address','郑州')}
dic1 = dict(set1)
print(dic1)#{'age': 18, 'name': '张三', 'address': '郑州'}
print(type(dic1))#<class 'dict'>
set2 = {'a','b','c','d'}
# dic3 = dict(set2) #报错 格式错误不可以转

三、运算符

1) 赋值运算符

=

2)算数运算符

+ - * / %  
**  求次方
// 求商 (10//3  ===> 3)

3)复合运算符

+=  # num += 1  === num=num+1
-=
*=
/=
%=
**=
//=

4) 比较运算符

> < >= <= != ==
3>4
比较运算符组成的表达式 返回值真和假

5)逻辑运算符

and  与  (短路原则 第一个为假直接结束)
逻辑与:
    表达式1    表达式2   结果
    真           真       真
    假           真       假
    假           假       假
or  或
逻辑或
    表达式1    表达式2   结果
    真           真       真
    假           真       真
    真           假       真
    假           假       假
    
not 非
逻辑非
    只要有一个表达式为真 即为假
    表达式   整个表达式
    真           假
    假           真

6)成员运算符

in  
not in
一般用于列表 元组 集合 字典的元素判断中
如果是字典按照键值查找 不是按照值

优先级:不记得优先级就加上小括号

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

推荐阅读更多精彩内容