博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习笔记二 列表、字典、集合
阅读量:6175 次
发布时间:2019-06-21

本文共 7344 字,大约阅读时间需要 24 分钟。

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
#扩展
= 
[
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
= 
set
([
3
,
5
,
9
,
10
])      
#创建一个数值集合  
   
= 
set
(
"Hello"
)         
#创建一个唯一字符的集合  
= 
t | s          
# t 和 s的并集  
   
= 
t & s          
# t 和 s的交集  
   
= 
t – s          
# 求差集(项在t中,但不在s中)  
   
= 
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 
的长度  
   
in 
s  
测试 x 是否是 s 的成员  
   
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)  
- 
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
= 
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,如需转载请自行联系原作者
你可能感兴趣的文章
AngularJS-01.AngularJS,Module,Controller,scope
查看>>
【MySQL 安装过程1】顺利安装MySQL完整过程
查看>>
Inno Setup入门(二十)——Inno Setup类参考(6)
查看>>
图片自适应
查看>>
amd cmd
查看>>
Linux下的uml画图工具
查看>>
xml返回数组数据
查看>>
约瑟夫问题总结
查看>>
spring mybatis 批量插入返回主键
查看>>
指针函数小用
查看>>
开源力量公开课第二十三期-从SVN到Git,次时代代码管理
查看>>
输入挂
查看>>
升级迁移前,存储过程统计各个用户下表的数据量,和迁移后的比对
查看>>
sql注入分类
查看>>
初识CSS选择器版本4
查看>>
[Hadoop in China 2011] 朱会灿:探析腾讯Typhoon云计算平台
查看>>
JavaScript之数组学习
查看>>
PHP 设置响应头来解决跨域问题
查看>>
CAS实现SSO单点登录原理
查看>>
博客园美化专用图片链接
查看>>