1、列表
1
2
3
4
5
|
#!/usr/bin/env python
#_*_coding:utf-8_*_
names
=
[
'Alex'
,
"Tenglan"
,
'Eric'
]
#print names[0] //python2.7不必加括号
print
(names[
0
])
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/usr/bin/env python
#_*_coding:utf-8_*_
#切片:取多个元素
names
=
[
"Alex"
,
"Tenglan"
,
"Eric"
,
"Rain"
,
"Tom"
,
"Amy"
]
print
(names[
1
:
4
])
#追加
names.append(
"xiao"
)
print
(names)
#插入
names.insert(
2
,
"强行从Eric前面插入"
)
print
(names)
#修改
names[
2
]
=
"该换人了"
print
(names)
|
1
2
3
4
5
6
7
8
9
|
#删除
del
names[
2
]
print
(names)
#删除指定元素
names.remove(
"Eric"
)
print
(names)
#删除列表最后一个值
names.pop()
print
(names)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#扩展
b
=
[
1
,
2
,
3
]
names.extend(b)
print
(names)
#拷贝
name_copy
=
names.copy()
print
(name_copy)
#统计
names
=
[
'Alex'
,
'Tenglan'
,
'Amy'
,
'Tom'
,
'Amy'
,
1
,
2
,
3
]
print
(names.count(
"Amy"
))
#排序
names[
-
3
]
=
'1'
names[
-
2
]
=
'2'
names[
-
1
]
=
'3'
names.sort()
print
(names)
|
1
2
3
4
5
|
#反转
names.reverse()
print
(names)
#获取下标
print
(names.index(
"Amy"
))
|
2、元组
元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
语法
names = ("alex","jack","eric")
它只有2个方法,一个是count,一个是index,完毕。
1
2
3
4
5
|
#!/usr/bin/env python
#_*_coding:utf-8_*_
names
=
(
"alex"
,
"jack"
,
"eric"
)
print
(names.count(
"alex"
))
print
(names.index(
"jack"
))
|
3、字符串操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/3/26 11:31
# @Author : corasql
# @Site :
# @File : str_test.py
# @Software: PyCharm Community Edition
#首字母大写
name
=
'test'
print
(name[
0
].capitalize())
#大写全部变小写
name
=
"TeSt"
print
(name.casefold())
# 输出 '-----------------------TeSt-----------------------'
print
(name.center(
50
,
"-"
))
#将字符串编码成bytes格式
print
(name.encode())
|
1
2
3
4
5
6
7
|
#判断字符串是否以 Li结尾
name
=
"TeStLi"
print
(name.endswith(
"Li"
))
#输出'Alex Li', 将\t转换成多长的空格
print
(
"Alex\tLi"
.expandtabs(
10
))
#查找A,找到返回其索引, 找不到返回-1
print
(name.find(
'A'
))
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/3/26 12:58
# @Author : corasql
# @Site :
# @File : str_test1.py
# @Software: PyCharm Community Edition
#format
msg
=
"my name is {}, and age is {}"
print
(msg.
format
(
"alex"
,
22
))
msg
=
"my name is {1}, and age is {0}"
print
(msg.
format
(
"alex"
,
22
))
msg
=
"my name is {name}, and age is {age}"
print
(msg.
format
(age
=
22
,name
=
"ale"
))
print
(msg.format_map({
'name'
:
'alex'
,
'age'
:
22
}))
#返回a所在字符串的索引
print
(msg.index(
'a'
) )
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#检测字符串是否由字母和数字组成
print
(
'9aA'
.isalnum())
#是否整数
print
(
'9'
.isdigit())
#检测字符串是否只由数字组成。这种方法是只针对unicode对象
str
=
u
"this2009"
print
(
str
.isnumeric())
str
=
u
"23443434"
print
(
str
.isnumeric())
#判断字符串所包含的字符是否全部可打印。字符串包含不可打印字符,如转义字符,将返回False
print
(
str
.isprintable())
#字符串是否仅包含空格或制表符。注意:空格字符与空白是不同的
print
(
str
.isspace())
|
1
2
|
#判断字符串每个单词的首字母是否大写
print
(
str
.istitle())
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#判断所有字母字符是否全部大写
print
(
str
.isupper())
#'alex|jack|rain'
print
(
"|"
.join([
'alex'
,
'jack'
,
'rain'
]))
#maketrans
intab
=
"aeiou"
outtab
=
"12345"
trantab
=
str
.maketrans(intab, outtab)
str
=
"this is string example....wow!!!"
print
(
str
.translate(trantab))
#out: th3s 3s str3ng 2x1mpl2....w4w!!!
print
(msg.partition(
'is'
))
#out: ('my name ', 'is', ' {name}, and age is {age}')
#替换
print
(
"alex li, chinese name is lijie"
.replace(
"li"
,
"LI"
,
1
))
|
1
2
3
4
5
6
7
8
9
10
11
12
|
#大小写互换
str
=
"this is string example....wow!!!"
print
(
str
.swapcase())
print
(msg.zfill(
40
))
# out: 00000my name is {name}, and age is {age}
print
(msg.ljust(
40
,
"-"
))
#my name is {name}, and age is {age}-----
print
(msg.rjust(
40
,
"-"
))
#-----my name is {name}, and age is {age}
# 检测一段字符串可否被当作标志符,即是否符合变量命名规则
b
=
"ddefdsdff_哈哈"
print
(b.isidentifier())
|
4、字典操作
字典的特性:
dict是无序的
key必须是唯一的,so 天生去重
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/3/26 13:26
# @Author : corasql
# @Site :
# @File : dic.py
# @Software: PyCharm Community Edition
info
=
{
'stu1101'
:
"TengLan Wu"
,
'stu1102'
:
"LongZe Luola"
,
'stu1103'
:
"XiaoZe Maliya"
,
}
#增加
info[
"stu1104"
]
=
"Python "
print
(info)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#修改
info[
'stu1101'
]
=
"test"
print
(info)
#删除
info.pop(
"stu1101"
)
#标准删除姿势
print
(info)
del
info[
'stu1103'
]
# 换个姿势删除
print
(info)
#随机删除
info
=
{
'stu1102'
:
'LongZe Luola'
,
'stu1103'
:
'XiaoZe Maliya'
}
info.popitem()
print
(info)
#查找
info
=
{
'stu1102'
:
'LongZe Luola'
,
'stu1103'
:
'XiaoZe Maliya'
}
print
(
"stu1102"
in
info)
#标准用法
print
(info.get(
"stu1102"
))
#获取
print
(info[
"stu1102"
])
#同上,但是看下面
|
1
2
3
4
5
6
7
8
|
print
(info[
"stu1105"
])
#如果一个key不存在,就报错,get不会,不存在只返回None
#循环dict
#方法1
for
key
in
info:
print
(key,info[key])
#方法2
for
k,v
in
info.items():
#会先把dict转成list,数据里大时莫用
print
(k,v)
|
5、集合操作
集合是一个无序的,不重复的数据组合,它的主要作用如下:
去重,把一个列表变成集合,就自动去重了
关系测试,测试两组数据之前的交集、差集、并集等关系
1
2
3
4
5
6
7
8
9
10
|
s
=
set
([
3
,
5
,
9
,
10
])
#创建一个数值集合
t
=
set
(
"Hello"
)
#创建一个唯一字符的集合
a
=
t | s
# t 和 s的并集
b
=
t & s
# t 和 s的交集
c
=
t – s
# 求差集(项在t中,但不在s中)
d
=
t ^ s
# 对称差集(项在t或s中,但不会同时出现在二者中)
|
基本操作:
1
2
3
4
5
6
7
8
9
|
t.add(
'x'
)
# 添加一项
s.update([
10
,
37
,
42
])
# 在s中添加多项
使用remove()可以删除一项:
t.remove(
'H'
)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
len
(s)
set
的长度
x
in
s
测试 x 是否是 s 的成员
x
not
in
s
测试 x 是否不是 s 的成员
s.issubset(t)
s <
=
t
测试是否 s 中的每一个元素都在 t 中
s.issuperset(t)
s >
=
t
测试是否 t 中的每一个元素都在 s 中
s.union(t)
s | t
返回一个新的
set
包含 s 和 t 中的每一个元素
s.intersection(t)
s & t
|
1
2
3
4
5
6
7
8
9
10
11
12
|
返回一个新的
set
包含 s 和 t 中的公共元素
s.difference(t)
s
-
t
返回一个新的
set
包含 s 中有但是 t 中没有的元素
s.symmetric_difference(t)
s ^ t
返回一个新的
set
包含 s 和 t 中不重复的元素
s.copy()
返回
set
“s”的一个浅复制
|
6、文件操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/3/26 14:00
# @Author : corasql
# @Site :
# @File : file.py
# @Software: PyCharm Community Edition
f
=
open
(
'lyrics'
)
# 打开文件
first_line
=
f.readline()
print
(
'first line:'
, first_line)
# 读一行
print
(
'我是分隔线'
.center(
50
,
'-'
))
data
=
f.read()
# 读取剩下的所有内容,文件大时不要用
print
(data)
# 打印文件
f.close()
# 关闭文件
|
7、字符编码与转码
需知:
1.在python2默认编码是ASCII, python3里默认是unicode
2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间
3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string
1
2
3
4
5
6
7
8
9
10
|
python2
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/3/26 13:55
# @Author : corasql
# @Site :
# @File : decode2.py
# @Software: PyCharm Community Edition
import
sys
print
(sys.getdefaultencoding())
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
msg
=
"我爱北京天安门"
msg_gb2312
=
msg.decode(
"utf-8"
).encode(
"gb2312"
)
gb2312_to_gbk
=
msg_gb2312.decode(
"gbk"
).encode(
"gbk"
)
print
(msg)
print
(msg_gb2312)
print
(gb2312_to_gbk)
python3
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/3/26 13:51
# @Author : corasql
# @Site :
# @File : decode.py
# @Software: PyCharm Community Edition
import
sys
print
(sys.getdefaultencoding())
|
1
2
3
4
5
6
7
8
9
|
msg
=
"我爱北京天安门"
#msg_gb2312 = msg.decode("utf-8").encode("gb2312")
msg_gb2312
=
msg.encode(
"gb2312"
)
#默认就是unicode,不用再decode,喜大普奔
gb2312_to_unicode
=
msg_gb2312.decode(
"gb2312"
)
gb2312_to_utf8
=
msg_gb2312.decode(
"gb2312"
).encode(
"utf-8"
)
print
(msg)
print
(msg_gb2312)
print
(gb2312_to_unicode)
print
(gb2312_to_utf8)
|
本文转自 corasql 51CTO博客,原文链接:http://blog.51cto.com/corasql/1910454,如需转载请自行联系原作者