python学习第二节 数据类型、字符编码、文件处理
-
标准数据类型
Python3 中有六个标准的数据类型:
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Sets(集合)
Dictionary(字典)
-
数字
#整型 在Python 3里,只有一种整数类型 int,表示为长整型; 内置的 type() 函数可以用来查询变量所指的对象类型。 作用:年纪,等级,身份证号,qq号等整型数字相关 >>> num=1 >>> print(num,type(num)) 1 <class 'int'> #浮点型 浮点型(Float) 作用:薪资,身高,体重,体质参数等浮点数相关 salary=3000.3 #本质salary=float(3000.3)
-
字符串
#作用:名字,性别,国籍,地址等描述信息 #定义:在单引号\双引号\三引号内,由一串字符组成 name='yinxin' #优先掌握的操作: #1、按索引取值(正向取+反向取) :只能取
正向取值
>>> name="yinxin"
>>> name[0]
'y'
反向取值
>>> name[-2]
'i
#2、切片(顾头不顾尾,步长)
>>> name="yinxin"
>>> name[:3]
'yin'
#3、长度len
>>> name="yinxin"
>>> len(name)
#4、成员运算in和not in
>>> "y" in name
True
>>> "y" not in name
False
#5、移除空白strip
>>> name 'yinxin '
>>> name.strip()
'yinxin'
#6、切分split
>>> name_list="yinxin1,yixnin2,yixnin3"
>>> name_list.split(",")
['yinxin1', 'yixnin2', 'yixnin3']
#7、循环
>>> name="yinxin"
>>> for i in name:
... print(i)
...
y
i
n
x
i
n
字符串练习
# 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分) name = " aleX" # 1) 移除 name 变量对应的值两边的空格,并输出处理结果 # 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果 # 3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果 # 4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果 # 5) 将 name 变量对应的值根据 “l” 分割,并输出结果。 # 6) 将 name 变量对应的值变大写,并输出结果 # 7) 将 name 变量对应的值变小写,并输出结果 # 8) 请输出 name 变量对应的值的第 2 个字符? # 9) 请输出 name 变量对应的值的前 3 个字符? # 10) 请输出 name 变量对应的值的后 2 个字符? # 11) 请输出 name 变量对应的值中 “e” 所在索引位置? # 12) 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
# 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分) name = " aleX" # 1) 移除 name 变量对应的值两边的空格,并输出处理结果 name = ' aleX' a=name.strip() print(a) # 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果 name=' aleX' if name.startswith(name): print(name) else: print('no') # 3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果 name=' aleX' if name.endswith(name): print(name) else: print('no') # 4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果 name=' aleX' print(name.replace('l','p')) # 5) 将 name 变量对应的值根据 “l” 分割,并输出结果。 name=' aleX' print(name.split('l')) # 6) 将 name 变量对应的值变大写,并输出结果 name=' aleX' print(name.upper()) # 7) 将 name 变量对应的值变小写,并输出结果 name=' aleX' print(name.lower()) # 8) 请输出 name 变量对应的值的第 2 个字符? name=' aleX' print(name[1]) # 9) 请输出 name 变量对应的值的前 3 个字符? name=' aleX' print(name[:3]) # 10) 请输出 name 变量对应的值的后 2 个字符? name=' aleX' print(name[-2:]) # 11) 请输出 name 变量对应的值中 “e” 所在索引位置? name=' aleX' print(name.index('e')) # 12) 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。 name=' aleX' a=name[:-1] print(a)
-
列表
#作用:多个装备,多个爱好,多门课程,多个女朋友等 #定义:[]内可以有多个任意类型的值,逗号分隔 my_girl_friends=['yinxin','yinxin1','yinxin2',4,5] #本质my_girl_friends=list([...]) 或 l=list('abc') #优先掌握的操作: #1、按索引存取值(正向存取+反向存取):即可存也可以取
正向取值
>>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]
>>> my_girl_friends[0]
'yinxin'
反向取值
>>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]
>>> my_girl_friends[-1]
5
#2、切片(顾头不顾尾,步长)
>>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]
>>> my_girl_friends[0:2]
['yinxin', 'yinxin1']
#3、长度
>>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]
>>> len(my_girl_friends)
5
#4、成员运算in和not in
>>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]
>>> "yinxin" in my_girl_friends
True
>>> "yinxin" not in my_girl_friends
False
#5、追加
>>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]
>>> my_girl_friends.append("yinxin4")
>>> my_girl_friends
['yinxin', 'yinxin1', 'yinxin2', 4, 5, 'yinxin4']
#6、删除
>>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]
>>> del my_girl_friends[0]
>>> my_girl_friends
['yinxin1', 'yinxin2', 4, 5, 'yinxin4']
#7、循环
>>> my_girl_friends=['yinxin1','yinxin2',4,5]
>>> for name in my_girl_friends:
... print(name)
...
yinxin1
yinxin2
4
5
#ps:反向步长
正向步长
>>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]
>>> my_girl_friends[0:3:1]
['yinxin', 'yinxin1', 'yinxin2']
反向步长
>>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]
>>> my_girl_friends[2::-1]
['yinxin2', 'yinxin1', 'yinxin']
#列表翻转
>>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]
>>> my_girl_friends[::-1]
[5, 4, 'yinxin2', 'yinxin1', 'yinxin']
插入 指定位置插入元素
name_list
['123', 'lilei', 'hanmeimei', 'test']
name_list.insert(1,"1232")
name_list
['123', '1232', 'lilei', 'hanmeimei', 'test']
-
元组
#作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读 #定义:与列表类型比,只不过[]换成() age=(11,22,33,44,55)本质age=tuple((11,22,33,44,55)) #优先掌握的操作: #1、按索引取值(正向取+反向取):只能取
#2、切片(顾头不顾尾,步长) #3、长度 #4、成员运算in和not in #5、循环
>>> age=(11,22,33,44,55)
>>> age[0] #按照索引正向取值
11
>>> age[-1] #按照索引反向取值
55
>>> age[0:2] #切片
(11, 22)
>>> len(age) #长度
5
>>> 11 in age #in
True
>>> 11 not in age #not in
False
>>> for num in age: #循环
... print(num)
...
11
22
33
44
55
-
字典
#作用:存多个值,key-value存取,取值速度快 #定义:key必须是不可变类型,value可以是任意类型 info={'name':'egon','age':18,'sex':'male'} #本质info=dict({....}) 或 info=dict(name='egon',age=18,sex='male') 或 info=dict([['name','egon'],('age',18)]) 或 {}.fromkeys(('name','age','sex'),None) #优先掌握的操作: #1、按key存取值:可存可取
>>> info={'name':'yinxin','age':18,'sex':'male'}
>>> info['name']
'yinxin'
#2、长度len
>>> info={'name':'yinxin','age':18,'sex':'male'}
>>> len(info)
3
#3、成员运算in和not in
>>> info={'name':'yinxin','age':18,'sex':'male'}
>>> "name" in info
True
>>> "name" not in info
False
#4、删除
1>
>>> info={'name':'yinxin','age':18,'sex':'male'}
>>> res=info.pop("name")
>>> print(res)
yinxin
2>
>>> info={'name':'yinxin','age':18,'sex':'male'}
>>> del info["name"]
>>> info
{'sex': 'male', 'age': 18}
#5、键keys(),值values(),键值对items()
>>> info.keys()
dict_keys(['sex', 'age'])
>>> info.values()
dict_values(['male', 18])
>>> info.items()
dict_items([('sex', 'male'), ('age', 18)])
#6、循环
>>> info={'name':'yinxin','age':18,'sex':'male'}
>>> for k in info:
... print(k,info[k])
...
name yinxin
sex male
age 18
>>> info={'name':'yinxin','age':18,'sex':'male'}
>>> for k,v in info.items():
... print(k,v)
...
name yinxin
sex male
age 18
练习
1 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中 即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
a={'k1':[],'k2':[]} c=[11,22,33,44,55,66,77,88,99,90] for i in c: if i>66: a['k1'].append(i) else: a['k2'].append(i) print(a)
2 统计s='hello a a say hello 1 1'中每个单词的个数 结果如:{'say': 1, 'hello': 2, 'a': 2, '1': 2}
s='hello a a say hello 1 1' l=s.split() dict={} for i in l: if i in dict: dict[i]+=1 else: dict[i]=1 print(dict) {'say': 1, 'hello': 2, 'a': 2, '1': 2}
dic={} words=s.split() print(words) for word in words: #word='alex' dic[word]=s.count(word) print(dic) #利用setdefault解决重复赋值 ''' setdefault的功能 1:key存在,则不赋值,key不存在则设置默认值 2:key存在,返回的是key对应的已有的值,key不存在,返回的则是要设置的默认值 d={} print(d.setdefault('a',1)) #返回1 d={'a':2222} print(d.setdefault('a',1)) #返回2222 ''' s='hello alex alex say hello sb sb' dic={} words=s.split() for word in words: #word='alex' dic.setdefault(word,s.count(word)) print(dic)
#利用集合,去掉重复,减少循环次数 s='hello alex alex say hello sb sb' dic={} words=s.split() words_set=set(words) for word in words_set: dic[word]=s.count(word) print(dic)
-
集合
#作用:去重,关系运算, #定义: 知识点回顾 可变类型是不可hash类型 不可变类型是可hash类型 #定义集合: 集合:可以包含多个元素,用逗号分割, 集合的元素遵循三个原则: 1:每个元素必须是不可变类型(可hash,可作为字典的key) 2:没有重复的元素 3:无序 注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值 #优先掌握的操作: #1、长度len #2、成员运算in和not in #3、|合集 #4、&交集 #5、-差集 #6、^对称差集 #7、== #8、父集:>,>= #9、子集:<,<=
pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
linuxs={'wupeiqi','oldboy','gangdan'}
print(pythons & linuxs
{'wupeiqi', 'gangdan'}
print(pythons | linuxs)
{'wupeiqi', 'egon', 'biubiu', 'oldboy', 'alex', 'yuanhao', 'gangdan'}
print(pythons -linuxs)
{'alex', 'egon', 'yuanhao', 'biubiu'}
print(pythons ^ linuxs)
{'egon', 'yuanhao', 'biubiu', 'alex', 'oldboy'}
字符编码
http://www.cnblogs.com/linhaifeng/articles/5950339.html
-
文件处理
http://www.cnblogs.com/linhaifeng/articles/5984922.html