Python 字典补充

代码

1
2
3
4
5
6
7
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

li = [11, 22, 33]
# 由于列表是不存在键的,因此在使用dict创建字典传入列表是需要使用enumerate方法
new_dict = dict(enumerate(li))
print(new_dict)

执行

1
2
C:\Users\ttlop\AppData\Local\Programs\Python\Python36\python.exe C:/Users/ttlop/PycharmProjects/q1_day2/c12.py
{0: 11, 1: 22, 2: 33}

代码2

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# 通过fromkeys创建时,如果设置的值为一个列表,则创建的所有键指向同一个地址空间
n1 = dict.fromkeys(["k1", "k2", "k3"], [])
print(n1)
n1['k1'].append("xxx")
print(n1)

n2 = {"k1":[], "k2":[], "k3":[]}
print(n2)
n2['k1'].append("xxx")
print(n2)

执行

1
2
3
4
5
C:\Users\ttlop\AppData\Local\Programs\Python\Python36\python.exe C:/Users/ttlop/PycharmProjects/q1_day2/c13.py
{'k1': [], 'k2': [], 'k3': []}
{'k1': ['xxx'], 'k2': ['xxx'], 'k3': ['xxx']}
{'k1': [], 'k2': [], 'k3': []}
{'k1': ['xxx'], 'k2': [], 'k3': []}

Python 元组补充

代码

1
2
3
4
5
6
7
8
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# 元组的元素不可被修改,but元组的元素的元素可被修改
t = (11, 22, ['alex', {"k1":"v1"}])
print(t)
t[2].append("xxx")
print(t)

执行

1
2
3
C:\Users\ttlop\AppData\Local\Programs\Python\Python36\python.exe C:/Users/ttlop/PycharmProjects/q1_day2/c10.py
(11, 22, ['alex', {'k1': 'v1'}])
(11, 22, ['alex', {'k1': 'v1'}, 'xxx'])

Python 列表补充

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# 调用列表方法时传入的参数可以是一个可迭代的对象,因此我们可以
# 字符串转换为列表
str = "my name is JIM"
print(list(str))

# 元组转换为列表
tup1 = ('my', 'name', 'is')
print(list(tup1))

# 字典转换为列表
dic = {"k1":"Alex", "k2":"seven"}
print(list(dic)) #因使用for循环字典时,默认遍历所有键

运行结果

1
2
3
4
C:\Users\ttlop\AppData\Local\Programs\Python\Python36\python.exe C:/Users/ttlop/PycharmProjects/q1_day2/c7.py
['m', 'y', ' ', 'n', 'a', 'm', 'e', ' ', 'i', 's', ' ', 'J', 'I', 'M']
['my', 'name', 'is']
['k1', 'k2']

Python 编码补充

  1. Python 3.5版本中,for循环的时候,循环的每一个元素是“字符”,可以正常打印汉字
  2. 如需要循环每一个汉字的字节码,可使用bytes(i, encoding=’utf-8’)方法,默认得到十六进制的字节码,当再次进行for循环的时候,可以得到十进制的结果,如使用bin方法可以得到二进制表示
  3. utf-8中一个汉字表示3字节,gbk中一个汉字表示2字节

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

a = 李璐
# 字符串转换为字节
b1 = bytes(a, encoding=utf-8)
print(b1)
b2 = bytes(a, encoding=gbk)
print(b2)
# 字节转换为字符串
print(str(b1, encoding=utf-8))
print(str(b2, encoding=gbk))

运行结果

1
2
3
4
b'\xe6\x9d\x8e\xe7\x92\x90'
b'\xc0\xee\xe8\xb4'
李璐
李璐

Python 列表类型功能解析

append() : 追加成员
count() : 统计列表中成员的个数
extend() : 扩展列表,参数为可迭代的对象,例如列表
index() : 返回成员的索引
insert() : 往某个索引的位置插入一个成员
pop() : 移出尾部的成员,且可以将移出的成员赋值给另外一个对象
remove() : 移除某个元素,只可移出发现的第一个成员
reverse() : 反转列表
sort() : 排序,支持不好,存在字符和数字的时候会执行错误
del : del 关键字可以删除指定位置的成员

Python 字符串类型功能解析

lstrip() : 去除字符串左侧空白
rstrip() : 去除字符串右侧空白
strip() : 去除字符串两侧空白(中间空白不会去除)
join() : 将可迭代的对象中元素使用字符串进行连接,例如字符串为-,可迭代的对象为列表、元组等
ljust() : 左对齐,右侧使用指定字符或空白填充
rjust() : 右对齐,左侧。。。
zfill() : 返回指定字符串的长度,原字符串右对齐,前面填充0
lower() : 转换为小写
upper() : 转换为大写
partition() : 根据字符串将字符串分给为三个部分,返回一个元组
rpartition() : 根据字符串将字符串分给为三个部分,返回一个元组,从右到左
replace() : 将指定匹配的字符串替换为另外一个字符串,可以代入第三个参数指定替换的次数
find() : 查看字符串位置
rdind() : 查找字符串位置,从右往左
split() : 通过指定字符串串分隔字符串,可以指定分隔的次数
rsplit() : 通过指定字符串串分隔字符串,可以指定分隔的次数,从右向左
endswitch() : 判断是否以某个字符串结尾
startswitch() : 判断是否以某个字符串开头
swapcase() : 大写变小写,小写变大写
istitle() : 判断是否为标题,即字符串中单词的首字母是否大写
title() : 设置为标题

Python 编码转换

要点:(Python 2.x版本)

1
2
3
4
5
6
7
8
9
	编码
unicode ----> UTF-8
解码
UTF-8 ----> unicode

编码
unicode ----> GBK
解码
GBK ----> unicode

因此若想将UTF-8编码转换为GBK编码,需要经过先解码成unicode,再编码成GBK的过程

在 Python 3.x 版本中,可以直接将UTF-8编码为GBK,且移除了unicode编码。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/evn python
# -*- coding: UTF-8 -*-

#由于windows DOS窗口默认使用GBK编码方式,如直接打印会出现乱码
print('胡肖勇')

#进行解码、编码过程,可以正常打印
str = '胡肖勇'
tmp_unicode = str.decode('UTF-8')
tmp_gbk = tmp_unicode.encode('GBK')
print(tmp_gbk)

print(tmp_unicode)
# Windows 比较人性化的设计是如果转换为unicode编码后,如果终端需要GBK编码,会自动将unicode编码为GBK。
# Python 3.x版本中是不可以的,因为移除了unicode编码。

示例运行结果:

1
2
3
4
C:\Users\ttlop>python E:\q1_s1_day01\s14.py
鑳¤倴鍕
胡肖勇
胡肖勇

Python 变量、基本数据类型

变量名

变量的作用:昵称,其代指内存里某个地址中保存的内容。

  1. 只能由数字、字母、下划线组成
  2. 不能以数字开头
  3. 变量名不能是python内部的关键字

基本的数据类型

  1. 数字
  2. 字符串 由单、双、三引号引起来的内容,必须是英文的引号
  3. 布尔值 True False

Python模块初识及用户输入打印

代码

1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import getpass

i1 = raw_input('Username:')
# 不显示用户输入
i2 = getpass.getpass('Password:')

print(i1)
print(i2)

执行

1
2
3
4
5
C:\Users\ttlop>E:\q1_s1_day01\index.py
Username:huxiaoyong
Password:
huxiaoyong
1234

Python 编码

Python由国外引入,在2.x版本中默认使用ASCII编码,此情况下,当输入中文字符时程序运行出错,究其原因是ASCII编码使用8位表示了所有的英文、符号、数字,但不包含中文。

后来引入万国码unicode。万国码规定最少使用两个字节,汉字使用3个字节。使用万国码可以标识世界上现有的所有语言,但存在一个弊端,英文、数字、符号等一个字节就可以标识的字符均使用至少两个字节标识,大大浪费了存储空间,由此引入了UTF-8编码。

UTF-8编码是对于unicode编码的加工,它规定了某些字符使用8位、某些使用16位、某些使用24位,大大节省了空间。GBK、GB2312与UTF-8编码类似,均是对于unicode编码的加工。