python学习笔记二 列表、字典、集合

简介:

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,如需转载请自行联系原作者
相关文章
|
8天前
|
Python
|
4天前
|
Python
11个提升Python列表编码效率的高级技巧
Python中关于列表的一些很酷的技巧
17 1
|
1天前
|
存储 Python 容器
Python字典
【7月更文挑战第12天】Python字典
6 2
|
1天前
|
存储 缓存 Python
Python中的列表(List)和元组(Tuple)是两种重要的数据结构
【7月更文挑战第12天】Python中的列表(List)和元组(Tuple)是两种重要的数据结构
4 1
|
3天前
|
Python
列表推导式(解析式)python
列表推导式(解析式)python
|
5天前
|
存储 Python
【Python】已解决:Python读取字典查询键报错“KeyError: ‘d‘”
【Python】已解决:Python读取字典查询键报错“KeyError: ‘d‘”
11 1
|
3天前
|
存储 算法 索引
python dict字典
python dict字典
|
存储 Linux 索引
python基础学习笔记
服务器 1.ftp服务器         FTP是FileTransferProtocol(文件传输协议)的英文简称,中文名称为“文传协议”。
1441 0
|
数据安全/隐私保护 Python