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,如需转载请自行联系原作者
相关文章
|
2天前
|
人工智能 Python
[oeasy]python089_列表_删除列表项_remove_列表长度_len
本文介绍了Python列表(list)的操作方法,重点讲解了`remove`方法的使用。通过实例演示如何删除列表中的元素,探讨了`ValueError`异常产生的原因,并分析了时间复杂度O(n)的概念。同时提及了`clear`方法清空列表的功能及`len`函数获取列表长度的用法。最后以购物清单为例,展示列表的实际应用场景,并预告快速生成列表的方法将在后续内容中介绍。
95 62
|
4天前
|
人工智能 Python
[oeasy]python088_列表_清空列表_clear
本文介绍了Python中列表的清空方法`clear`。通过实例讲解了`clear`与将列表赋值为空列表的区别,前者会清空原列表内容,而后者创建新空列表,不影响原列表。文中以收银程序为例,展示了`clear`的实际应用场景,并通过地址观察解释了两者的机制差异。最后总结了相关术语如`list`、`append`、`clear`等,帮助理解列表操作及方法调用的概念。
25 5
|
10天前
|
数据采集 搜索推荐 API
Python 原生爬虫教程:京东商品列表页面数据API
京东商品列表API是电商大数据分析的重要工具,支持开发者、商家和研究人员获取京东平台商品数据。通过关键词搜索、分类筛选、价格区间等条件,可返回多维度商品信息(如名称、价格、销量等),适用于市场调研与推荐系统开发。本文介绍其功能并提供Python请求示例。接口采用HTTP GET/POST方式,支持分页、排序等功能,满足多样化数据需求。
|
24天前
|
存储 人工智能 索引
Python数据结构:列表、元组、字典、集合
Python 中的列表、元组、字典和集合是常用数据结构。列表(List)是有序可变集合,支持增删改查操作;元组(Tuple)与列表类似但不可变,适合存储固定数据;字典(Dictionary)以键值对形式存储,无序可变,便于快速查找和修改;集合(Set)为无序不重复集合,支持高效集合运算如并集、交集等。根据需求选择合适的数据结构,可提升代码效率与可读性。
|
2月前
|
人工智能 数据库连接 开发工具
[oeasy]python069_当前作用域都有些什么_列表dir_函数_builtins
本文介绍了Python中`dir()`函数的使用方法及其作用。`dir()`可以列出当前作用域内的所有变量和成员,类似于`locals()`,但`dir()`不仅限于本地变量,还能显示模块中的所有成员。通过`dir(__builtins__)`可以查看内建模块中的所有内建函数,如`print`、`ord`、`chr`等。此外,还回顾了`try-except-finally`结构在数据库连接中的应用,并解释了为何`print`函数可以直接使用而无需导入,因为它位于`__builtins__`模块中。最后,简要提及了删除`__builtins__.print`的方法及其影响。
54 0
|
11月前
|
存储 Python
Python中,集合(Set)
Python中,集合(Set)
81 1
|
11月前
|
存储 索引 Python
Python中的集合(Set)
Python中的集合(Set)
84 3
|
8月前
|
索引 Python 容器
为什么Python中会有集合set类型?
为什么Python中会有集合set类型?
80 3
|
8月前
|
Python
python集合类型 (Set Types)
【8月更文挑战第3天】
116 9
|
11月前
|
存储 安全 Java
Python教程第3章 | 集合(List列表、Tuple元组、Dict字典、Set)
Python 列表、无序列表、字典、元组增删改查基本用法和注意事项
159 1