Python进阶之路—三

11、流程控制之for循环
python中的for循环语句是通过遍历某一序列对象(元组、列表、字典等)来构建循环,循环结束的条件就是遍历对象完成
(1)语法结构

for<循环变量> in <遍历对象>:
    语句1
    语句2
    ...

(2)示例:输出1-10

num = 1
for i in range(10):
    print(num,end='\t')
    num +=1
'''
输出结果
1   2   3   4   5   6   7   8   9   10  
'''

(3)、for…else语句
for循环中的else语句比较特殊,这里的else语句只有在循环正常结束的时候才会执行。也就是说,如果for循环在执行的过程中中断了,例如通过break跳出整个循环,此时else语句就不会被执行。

num = 1
for i in range(10):
    print(num,end='\t')
    num +=1
else:
    print()
    print("Edited by Damon")
#-------------------------------------------
counter = 1
for i in range(10):
    print(counter, end='\t')
    counter += 1
    if counter == 5:
        break#
else:
    print("Edited by Damon")
'''
输出结果
1   2   3   4   5   6   7   8   9   10  
Edited by Damon
1   2   3   4   
'''

12、数据类型初始
(1)、整型(int)和长整型(long int)
(2)浮点型(float)
(3)布尔值(bool)
(4)字符串:’ Hello World’、”Hello World”都可以
字符串的常用功能:
<1>移除空白
<2>分割
<3>长度
<4>索引
<5>切片
(5)、列表
创建列表:

name_list = ['Damon','HYQ','Damon24']

基本操作
“增删改查”、排序、身份判断
<1>增加
name_list.append(“XXX”):在列表name_list的最后增加字符串“XXX”
name_list.insert(index,“XXX”):在列表name_list中下标为index处增加字符串“XXX”
name_list.extend 扩展
<2>删
name_list.remove(“XXX”):删除列表name_list中的”XXX”
name_list.pop(index):删除列表name_list中下标是index的“XXX”
del name_list,del a[index]
name_list.clear():清空列表name_list
<3>改
name_list[index] = “XXX” :修改列表name_list中下标为index的内容为“XXX”
name_list[start:end] = [a,b,c]:修改列表中下标从[start:end]的内容为“a”,“b”“c”。
<4>查
索引(下标),都是从0开始
切片
.count 查找某个元素出现的次数
.index 根据内容找到其对应的位置
“HYQ”in name_list 判断字符串是否在列表“name_list”中
<5>排序
name_list.sort():列表中的元素按照ASCII码的顺序重新排序
name_list.reserse():列表中的元素从后往前依次输出
<6>身份判断
type(name_list) is list :判断name_list是否是列表
列表基本操作的示例:

#___Author: Damon
#___Date:   2017/8/8
#列表的增删改查功能
a = ["hyq","Damon","Hyq","JR"]
a_list = ['hyq','Damon','Hyq','JR']
##列表中的查找功能
print (a[0])#按照下标,取出列表中第一个元素
#切片
print(a[0:-1])#从左到右,依次取到倒数第二个['hyq', 'Damon', 'Hyq']
print(a[::])#从左到右,依次取出所有的元素 ['hyq', 'Damon', 'Hyq', 'JR']
print(a[0::2])#从坐到右,每隔两个取元素(步长为2print(a[::-1])#从右到左,依次取出所有的['JR', 'Hyq', 'Damon', 'hyq']

t = a.count("hyq")#计算出字符串“hyq”在列表a中出现的次数
print("t=",t)

print(a.index("hyq"))#找到字符串“hyq”在列表a中的下标(位置)
#print(a.index("hyq","JR"))
print("Damon24" in a)#判断字符串“Damon24”是否在列表a中
print("Damon" in a)#判断字符串“Damon”是否在列表a中

##列表中的增加功能
a.append("Damon24")#在列表a的最后,增加字符串“Damon24”
print(a)#['hyq', 'Damon', 'Hyq', 'JR', 'Damon24']
a.insert(3,"LJR")#在列表a的第3个位置,增加字符串“LJR”
print(a)#'hyq', 'Damon', 'Hyq', 'LJR', 'JR', 'Damon24']
a.extend("HYQ")
print(a)#['hyq', 'Damon', 'Hyq', 'LJR', 'JR', 'Damon24', 'H', 'Y', 'Q']
b_list = ["HYQ"]
a_list.extend(b_list)
print(a_list)#['hyq', 'Damon', 'Hyq', 'JR', 'HYQ']

##列表中的修改功能
a[1]= "Python"#把列表a中的a[1](“Damon”)换成字符串“Python”
print(a)#['hyq', 'Python', 'Hyq', 'LJR', 'JR', 'Damon24', 'H', 'Y', 'Q']
a[0:3] = ["I","am,","studying","Python"]
print(a)#['I', 'am,', 'studying', 'Python', 'LJR', 'JR', 'Damon24', 'H', 'Y', 'Q']


##列表中的删除功能
a.remove('H')#删除列表a中的元素'H'
print(a)#['I', 'am,', 'studying', 'Python', 'LJR', 'JR', 'Damon24', 'Y', 'Q']
a.pop(7)
print(a)#['I', 'am,', 'studying', 'Python', 'LJR', 'JR', 'Damon24', 'Q']
del a[7]
print(a)#['I', 'am,', 'studying', 'Python', 'LJR', 'JR', 'Damon24']
#a.clear()
print(a)

##列表中的排序功能
a.sort()#按照ASCII码中的顺序进行排序
print(a)# ['Damon24', 'I', 'JR', 'LJR', 'Python', 'am,', 'studying']

a.reverse()#将列表a中的元素反转输出
print(a)#['studying', 'am,', 'Python', 'LJR', 'JR', 'I', 'Damon24']

##判断a是否是一个列表
print(type(a) is list)#True

(6)元组
元组与列表大同小异,不同之处:
<1>元组的元素是不能修改的。
<2>元组的创建使用小括号,列表使用方括号
元组的创建

tup1 = ('hyq','Damon','JR')
#创建空元组
tup1 = ()
#元组中只包含一个元素时,需要在元素后面添加逗号
tup1 = ('hyq',)

对于元组的操作,除了不能对元素修改之外,其他的操作和 列表一样。
(7) 字典
字典通过“键值对(key—value)”来存储数据,格式如下:

dic = {key1:value1,key2:value2}

注意:
<1>键必须是唯一的,但值则不必。也就是说,值可以取任何数据类型,但键必须是不可变的,如字符串、数字、元组等。
<2>字典是无序的
字典的操作

#创建字典  变量名 = {"key":"value"},字典是无序的
dic1 = {"name":"HYQ","age":"25","sex":"male"}
print(dic1)#{'name': 'HYQ', 'age': '25', 'sex': 'male'}
#字典的操作之增加
dic1 = {"name":"HYQ"}
dic1['age'] = 25
print(dic1)#{'age': 25, 'name': 'HYQ'}
dic1.setdefault("age",26)#如果原字典中,已存在相同的键,则不再增加
print(dic1)#{'name': 'HYQ', 'age': 25}
dic1.setdefault('sex','male')#如果原字典中,不存在该键,则在字典中增加新的键值对
print(dic1)#{'age': 25, 'sex': 'male', 'name': 'HYQ'}
##--------------------------------------------------------------------
#字典的操作之查找
dic2 ={'age': 25, 'sex': 'male', 'name': 'HYQ'}
#查找dic2中某一具体键
print(dic2['age'])#25
#查找dic2中所有键
print(dic2.keys())#dict_keys(['name', 'sex', 'age'])
#查找dic2中所有值
print(dic2.values())#dict_values(['HYQ', 'male', 25])
#查找dic2中所有元素
print(dic2.items())#dict_items([('name', 'HYQ'), ('sex', 'male'), ('age', 25)])
##-------------------------------------------------------------------------
#字典操作之修改功能
dic3 = {'age': 25, 'sex': 'male', 'name': 'HYQ'}
#修改dic3中的某一个键的值
dic3['name'] = 'Damon'
print(dic3)#{'age': 25, 'name': 'Damon', 'sex': 'male'}
dic3_1 = {'1':'110','2':'120','name':'hyq'}
dic3.update(dic3_1)
print(dic3)#{'1': '110', 'age': 25, 'name': 'hyq', 'sex': 'male', '2': '120'}
print(dic3_1)#{'1': '110', 'name': 'hyq', '2': '120'}
##------------------------------------------------------------
#字典操作之删除功能
dic4 = {'1': '110', 'age': 25, 'name': 'hyq', 'sex': 'male', '2': '120'}
#删除字典中指定的键值对,无法返回被删的键所对应的值
del dic4['1']
print(dic4)#{'sex': 'male', '2': '120', 'name': 'hyq', 'age': 25}
#删除字典中指定的键值对,并能返回被删的键的值
ret = dic4.pop('2')
#输出被删的键的值
print(ret)#120
print(dic4)#{'name': 'hyq', 'sex': 'male', 'age': 25}
#随机删除键值对
dic4 = dic4.popitem()
print(dic4)#('name', 'hyq')
#删除整个字典
#del dic4
#print(dic4)
#-------------------------------
##字典的嵌套
dic5 = {
    "安徽":{
        '合肥':{'瑶海','庐阳','蜀山'},
        '淮南':{'田家庵','潘集','凤台'},
        '阜阳':{'颍上','临泉','阜南'},
    },
    "上海":{
        '浦东新区':{'陆家嘴','东方明珠','世纪大道'},
        '杨浦区':{'五角场','新江湾城','复旦大学'},
        '黄浦区':{'人民大道','外滩','城隍庙'}

    }
}

(8)集合
<1>集合(set):把不同的元素组合在一起形成集合。或者说,集合是一个无序的,不重复的数据组合。它是Python中基础数据类型。
集合对象是一组无排序的可哈希的值:集合成员可以做字典的键。
注:可哈希的对象可以作为字典的键和set的参数。在Python中所有不可改变的对象都是可哈希的,比如,字符串、元组。而可改变的容器如字典、列表、数字是不可哈希的。
<2>集合的主要作用:
·去重
·关系测试:测试两组数据的交集、差集、并集等关系。
<3>集合的创建

# s = set(('Damon Huang',2,'HYQ'))
# s = set("Damon Huang")
# print(s,type(s))#{'u', 'a', 'm', ' ', 'o', 'n', 'D', 'g', 'H'} 'set'>
# s1 = list(s)
# print(s1,type(s1))
# li = [[1,2],'3','abc']#列表li中的元素‘[1,2]’是不可哈希的,不能作为集合的对象
# s = set(li)#li是不可哈希的,li不能作为字典的键
# print(s)#出错:unhashable type: 'list'
# li = [1,2,'hyq']
# s = set (li)
# print(s)#{'1','2','hyq'}

<4>集合的访问
由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素

li = [2,3,'hyq']
print(type(li))
s = set(li)
print(s)
print(2 in s)#True
print('hy' in s)#False
for i in s:
    print(i)#hyq 2 3

<5>集合的增加、删除、更新

# li = [2,3,'hyq']
# s = set(li)
# #s.add('U')#添加一个元素
# #print(s)#{2, 3, 'hyq', 'U'}
# #s.add('uu')
# #print(s)#{'uu', 2, 3, 'hyq'}
# # s.update('opps')#把序列中的字符都添加
# # print(s)#{2, 3, 's', 'hyq', 'p', 'o'}
# s.update([12,'Damon'])
# print(s)#{2, 3, 12, 'hyq', 'Damon'}
# s.remove('hyq')#删除
# print(s)#{'Damon', 2, 3, 12}
# s.pop()
# print(s)#{3, 12, 'Damon'}
# # s.clear()
# # print(s)#set()
# del s
# print(s)#报错

<6>集合的关系测试

# a = set([1,2,3,4,5,6])
# b = set([4,5,6,7,8])
# print(a.intersection(b))#求交集{4, 5, 6}
# print(a & b)#{4, 5, 6}

# print(a.union(b))#求并集{1, 2, 3, 4, 5, 6, 7, 8}
# print(a|b) #{1, 2, 3, 4, 5, 6, 7, 8}

#差集
# print(a.difference(b))#in a but not in b {1, 2, 3}
# print(a-b)#{1, 2, 3}
# print(b-a)#{8, 7}

#对称差集(反向交集)
# print(a.symmetric_difference(b))#取出a有,b没有,b有a没有{1, 2, 3, 7, 8}
# print(a^b)#{1, 2, 3, 7, 8}

#父集(超集)
#print(a.issuperset(b))#False
#子集
#print(a.issubset(b))#False

你可能感兴趣的:(Python基础)