Dukeidea

导航

Python学习笔记-基础2

1.列表list

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

1.定义列表

1 names = ["Ronaldo","Messi","Torres"]
2 data = [["cpu","i7"],["gpu","gtx1080"],["ram","16GBddr5"]]

2.访问列表内的元素。下标从0开始计数

>>> names[0]
Ronaldo
>>> names[-1] #倒序取
Torres

>>> data[0][1]
i7
>>> data[-2][0]  #倒序取
gpu
>>> data[-2][-1]
gtx1080

3.切片操作

>>>names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"]
>>>names[2:3]      #取下标介于2到3之间的元素,不包含下标为2、3的元素》
['Torres', 'Gerrard']  
>>>names[:3]        #等价于names[0:3]
['Ronaldo', 'Messi', 'Torres']
>>>names[2:]        #取下标2到最后一个值
['Torres', 'Gerrard', 'Suarez']
>>>names[0::2]     #每隔2个元素取一次
['Ronaldo', 'Torres', 'Suarez']
>>>names[::2   ]  
['Ronaldo', 'Torres', 'Suarez']
>>>names[1::3]     #从下标1开始每隔3个元素取一次
['Messi', 'Suarez']
>>>names[1:4:2]    #从下标1-4之间,每隔2个元素取一次
['Messi', 'Gerrard']  

4.追加元素

使用append()方法,在列表最后增加元素

1 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"]
2 names.append("Ronney")
3 print(names)
[
'Ronaldo', 'Messi', 'Torres', 'Gerrard', 'Suarez', 'Ronney']

5.插入元素

使用insert()方法

1 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"] 
2 3 names.insert(3,"Griezmann") #插入在下标3之前 4 print(names) ['Ronaldo', 'Messi', 'Torres', 'Griezmann', 'Gerrard', 'Suarez']
1 names.insert(0,"Griezmann") #插入在下标0之前 2 print(names) ['Griezmann', 'Ronaldo', 'Messi', 'Torres', 'Griezmann', 'Gerrard', 'Suarez']

 6.修改元素

names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"]
names[2] = "Bale"   #按照下标号码修改
print(names)
['Ronaldo', 'Messi', 'Bale', 'Gerrard', 'Suarez']

names[2] = ["Bale"]   #注意如果写了括号相当于传了一个列表进入
print(names)   
['Ronaldo', 'Messi', ['Bale'], 'Gerrard', 'Suarez']

7.删除元素

使用del()/remove()/pop()方法

names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"]
del names[0]                     #删除对应下标元素
names.remove("Messi")    #删除指定元素
print(names)
['Torres', 'Gerrard', 'Suarez']
names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"]
names.pop()    #删除最后一个元素
names.pop(1)   #删除对应下标
print(names)
['Ronaldo', 'Torres', 'Gerrard']

8.扩展

使用extend()方法

1 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"]
2 names2 = ["Bale","Higuaín"]
3 
4 names.extend(names2)
5 print(names)
['Ronaldo', 'Messi', 'Torres', 'Gerrard', 'Suarez', 'Bale', 'Higuaín']

9.统计元素、获取下标

count统计元素个数

1 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez","Messi"]
2 
3 count = names.count("Messi")
4 print(count)
5 #输出结果:2

index获取元素下标

1 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez","Messi"]
2 
3 index = names.index("Messi")
4 print(index)
#输出结果:1       只返回第一个找到的下标

10.翻转列表

使用reverse()方法

1 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"]
2 
3 names.reverse()
4 print(names)
['Suarez', 'Gerrard', 'Torres', 'Messi', 'Ronaldo']

11.排序

使用sort()方法

1 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"]
2 
3 names.sort()
4 print(names)
['Gerrard', 'Messi', 'Ronaldo', 'Suarez', 'Torres'] #按照字母顺序

注意:Python3里不同数据类型不能放在一起排序
这样的列表使用sort方法排序会报错 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez",1,2]

12.复制

copy.copy  称为浅copy....   所谓浅copy就是对引用的拷贝

copy.deepcopy 称为深copy...  所谓深copy就是完成拷贝一个副本

 1 import  copy
 2 a=['hello',[1,2,3]]
 3 b=copy.copy(a)
 4 c=copy.copy(a)
 5 
 6 a[0]='world'
 7 a[1].append(4)
 8 print(a)
 9 print(b)
10 print(c)

    ['world', [1, 2, 3, 4]]
    ['hello', [1, 2, 3, 4]]
    ['hello', [1, 2, 3]]

通过输出结果发现,浅copy的列表b,由于a列表进行中的第二个元素列表进行了修改,b列表随着a改变。c列表完全是最初a列表的副本,不受a变化的影响。

 

2.元组Turple

元组不能修改,只能查询,又叫只读列表

元组只有Count和Index方法

1 names = ("Ronaldo","Messi","Torres","Gerrard","Suarez")
2 print(names)
('Ronaldo', 'Messi', 'Torres', 'Gerrard', 'Suarez')
1 count = names.count("Ronaldo")
2 index = names.index("Ronaldo")
3 print(count,index)
1 0

 3.字符串String

常用操作

1 str = "helloworld"
2 
3 str.capitalize()   #首字母大写,输出结果Helloworld
4 str.casefold()     #大写全部转小写
5 str.center(15,"*")   #输出    ***helloworld**
6 str.count('l')            #统计字符串种出现的次数,输出结果为3
7 str.encode()            #将字符串编码成bytes格式
8 str.endswith("ld")   #判断结尾是否以“ld”结尾,输出结果为True   同理有startwith()方法
 1 str.index('e')        #返回e所在字符串的索引
 2 str.isalnum()       #是否为字母数字
 3 str.isdigit()           #判断是否整数
 4 str.isnumeric()        #是否为数字
 5 str.isprintable()       #是否可打印
 6 str.isspace()           #是否为空格
 7 str.istitle()               #是否为标题
 8 str.isupper()            #是否全为大写
 9 str.isalpha()             #是否是字母,带数字之类的为False        
10 str.islower()              #是否全为小写
11 str.isdecimal()          #是否包含十进制数字
12 str.isidentifier()        #检测一段字符串可否被当作标志符,即是否符合变量命名规则
13 str
.swapcase() #大小写互换
#jion()方法,以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
str = "-";
seq = ("a", "b", "c")     # 字符串序列
print(str.join( seq ))
输出:a-b-c
#split() 方法,以string为分隔符,分割字符串
str = "Helloworld"
m = str.split("o")   #split("o",2)可设置最大分割次数
print(m)

#输出 ['Hell', 'w', 'rld']
1 str.strip()   #去掉字符串左右两边的空格,lsrtip()即只去除左边的空格
2 str.find("o")   #检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-14 str.rfind("o")   #类似于 find()函数,但是从右边开始查找.
#partition   把字符串分割成一个3元素 元组
str = "Helloworld"
m = str.partition("o")
print(m)
#输出 ('Hell', 'o', 'world')
1 #ljust(),填充字符串,同理还有rjust()方法
2 str = "Helloworld"
3 m = str.ljust(15,"*")
4 print(m)
# 输出 Helloworld*****
1 #replace()方法,新字符串替代旧字符串
2 str = "Helloworld"
3 m = str.replace("Hello","Nihao")
4 print(m)
5 
6 #输出 Nihaoworld

4.字典Dict

字典是一种key - value 的数据类型,无序,key必须是唯一的,可储存任意类型对象。

定义一个字典

1 d = {"name1":"Michael ",
2       "name2":"Trevor",
3       "name3":"Franklin "}

常用操作

#增加
d["name4"]=["Niko"]
>>>{'name2': 'Trevor', 'name3': 'Franklin ', 'name4': ['Niko'], 'name1': 'Michael '}

#修改
d["name1"]=["Niko"]
>>>{'name3': 'Franklin ', 'name2': 'Trevor',, 'name1': ['Niko']}

#删除 
d.pop("names")
d.popitem()          #随机删除
del d["name1"]

#查找   
#A in B 字符串、列表、字典等都可以使用
>>>d = {"name":["Michael ","Trevor","Franklin "]}
>>>"name1" in d
True    # key不存在,就报错

#获取value
>>>d["name1"]
Michael      #若key不存在会报错

>>>d.get("name1")
Michael     #若key不存在返回None
View Code

其他方法

1 #获取Value
2 d.values()
3 dict_values(['Franklin ', 'Michael ', 'Trevor'])
4 
5 #获取Key
6 d.keys()
7 dict_keys(['name2', 'name1', 'name3'])
View Code
 1 #update 把一个字典的键值添加到另外一个字典里
 2 d = {"name1":"Michael ",
 3      "name2":"Trevor",
 4      "name3":"Franklin "}
 5 
 6 d2 = {"name4":"Niko"}
 7 d.update(d2)
 8 print(d)
 9 {'name1': 'Michael ', 'name2': 'Trevor', 'name4': 'Niko', 'name3': 'Franklin '}
10 
11 #setdefault  查找键值, 键不存在时,设置默认键值
12 d = {"name1":"Michael ",
13      "name2":"Trevor",
14      "name3":"Franklin "}
15 
16 m = d.setdefault("name1","Niko")
17 t = d.setdefault("name4","Niko")
18 print(m)
19 print(t)
20 #输出Michael 
21 #输出Niko
1 # 函数以列表返回可遍历的(键, 值) 元组数组
2 d = {"name1":"Michael ",
3      "name2":"Trevor",
4      "name3":"Franklin "}
5 u = d.items()
6 print(u)
7 dict_items([('name2', 'Trevor'), ('name3', 'Franklin '), ('name1', 'Michael ')])

字典循环

1 #方法1
2 for key in info:
3     print(key,info[key])
4 
5 #方法2
6 for k,v in info.items(): #会先把dict转成list,数据里大时莫用
7     print(k,v)
View Code

5.集合Set

集合是无序、不重复的,与数学意义上的集合有相似之处

定义一个集合

1 a = set([1,2,6,8,9])
2 b = set(["what","where","when"])
3 print(a)
4 print(b)
{8, 1, 2, 6, 9}
{'when', 'where', 'what'}

常用操作

set1 = set([1,2,6,8,9])
set2 = set([3,6,9])

a = set1 | set2   #求并集
a = set1.union(set2)
print(a)
{1, 2, 3, 6, 8, 9}

a = set1 & set2    #求交集
a = set1.intersection(set2)
print(a)
{9, 6}

a = set1 - set2  #求差集
a = set1.difference(set2)
print(a)
{8, 1, 2}

a = set1 ^ set2   #求对称差集,即获得两个集合不交叉的元素
a = set1.symmetric_difference(set2)
{1, 2, 3, 8}

################
set1 = set([1,2,6,8,9])
set2 = set([6,9])
a = set1 >= set2   #集合1是否包含集合2    等价于issuperset()方法
b = set1 <= set2   #集合2是否包含集合1    等价于 issubset()方法
print(a)
print(b)

基本操作

set1 = set([1,2,6,8,9])

#增加
set1.add(5)
#输出{1, 2, 5, 6, 8, 9}

#增加多项
set1.update([5,10])
#输出{1, 2, 5, 6, 8, 9, 10}

#删除
set1.remove(6)     # 若元素不存在会报错
set1.discard(6)     # 若元素不会报错
#输出{8, 1, 2, 9}   
set1.pop()      #随机删
View Code

 

posted on 2017-02-10 12:08  Dukeidea  阅读(220)  评论(0编辑  收藏  举报