Python 列表与元组和流程控制语句

原创
04/11 21:27
阅读数 17

一、列表

        Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。

1、list(列表)

# -*- coding:utf-8 -*-
'''
问题:存储5个人的年龄,求他们的平均年龄
'''
age1 = 18
age2 = 19
age3 = 20
age4 = 21
age5 = 22
print((age1+age2+age3+age4+age5)/5)

'''
问题:存储100个人的年龄,求他们的平均年龄
解决:使用列表
列表本质:是一种有序的集合
'''


'''创建列表
格式: 列表名 = [列表选项1, 列表选项2, ……, 列表选项n]
'''
# 创建空列表
list1 = []

# 创建带有元素的列表
# 列表中的元素的数据类型可以不同
list2 = [18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, "good", True, None]




'''
列表元素的访问
'''
list3 = [18, 19, 20, 21, 22]
# 取值:列表名[下标]
print(list3[2])
# 替换:列表名[下标] = 新值
list3[2] = 200
print(list3)
# 注意:下标不要越界
# print(list3[5])
# list3[5] = 23
# print(list3)




'''
列表操作
'''
# 列表组合
list4 = [1,2,3]
list5 = [4,5,6]
print(list4, list5)
print(list4 + list5)
# 列表重复
list6 = [7,8,9]
print(list6 * 3)
# in        not in
print(1 in [1,2,3])
# 列表截取(切片)
list7 = [1,2,3,4,5,6,7,8,9,0]
print(list7[2])
print(list7[1:4])
# -1表示的是最后一个元素的下标, -2倒数第二个元素的下标
print(list7[1:-1])
print(list7[4:])
print(list7[:4])




'''
二维列表:列表中元素是一维列表
本质:一维列表
'''
list8 = [[1,2,3],
         [4,5,6],
         [7,8,9]]
print(list8)
print(list8[1][1])



2、列表方法

# -*- coding:utf-8 -*-
# append(obj)
# 在列表的末尾添加一个新的元素
list1 = [1,2,3,4,5]
list1.append([9,8,7])
print(list1)

# extend(seq)
# 在列表末尾一次性追加多个元素
list2 = [1,2,3,4,5]
list2.extend([9,8,7])
print(list2)

# insert(index, obj)
# 将元素出入列表,不会覆盖原元素,原元素按顺序后移
list3 = [1,2,3,4,5]
list3.insert(2, 100)
print(list3)

# pop(obj=list[-1])
# 移除列表中指定下标处的元素,默认删除最后一个元素
list4 = [1,2,3,4,5]
list4.pop()
# list4.pop()
print(list4)

# remove(obj)
# 移除列表中的某个值的第一个匹配项
list5 = [1,2,3,4,5,3]
list5.remove(3)
print(list5)

# clear()
# 清空列表
list6 = [1,2,3,4,5,3]
list6.clear()
print(list6)

# index(obj)
# 从列表中找出某个值第一个匹配项的下标
list6 = [1,2,3,4,5,3]
print(list6.index(3))

# len(list)
# 返回列表中元素的个数
list7 = [1,2,3,4,5,3]
print(len(list7))

# count(obj)
# 统计某个元素在列表中出现的次数
list7 = [1,2,3,4,5,3]
print(list7.count(3))

# max(list)
# 返回列表中元素的最大值

# min(list)
# 返回列表中元素的最小值

# reverse()
# 倒序列表中元素
list8 = [1,2,3,4,5,3]
list8.reverse()
print(list8)

# sort([func])
list9 = [4,7,1,3,9,5]
list9.sort()
list9.reverse()
print(list9)

# list(seq)
# 转为列表  字符串、元组、集合
print(list("sunck"))

# copy()
# 拷贝

3、浅拷贝与深拷贝

# -*- coding:utf-8 -*-
from copy import copy, deepcopy
'''
==:判断的是值
is:判断的是内存地址
'''
# num1 = 300
# num2 = 300
# print(id(num1), id(num2))
# print(num1 == num2)
# print(num1 is num2)

'''
小整数对象:[-5, 256]
最好在python环境中演示,pycharm工具进行了其他的优化
'''


# a = [1,2,3,4,5,[7,8,9]]
# b = a
# print(b == a)
# print(b is a)
# a[5][1] = 100
# print(a, b)
# print(id(a), id(b))
# print(id(a[5]), id(b[5]))

a = [1,2,3,[4,5,6]]
#深浅拷贝的区分的前提是列表中要有其他列表
#浅拷贝:只拷贝表层元素
# copy
b = copy(a)


#深拷贝:在内存中重新创建所有子元素
# deepcopy
c = deepcopy(a)

a[0] = 100
print(a, b, c)

# print(b == a)
# print(b is a)
# print(c == a)
# print(c is a)
# print(id(a[1]), id(b[1]), id(c[1]))
# print(id(a), id(b), id(c))
# print(id(a[3]), id(b[3]), id(c[3]))
# print(id(a[3][1]), id(b[3][1]), id(c[3][1]))


二、元组

        另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的。
        因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

# -*- coding:utf-8 -*-
'''
元组
本质:是一种有序集合

特性:
    1、与列表非常类似
    2、一旦初始化就不能修改
    3、使用小括号
'''

#创建元组: 元组名 = (元组选项1, 元组选项2, ……, 元组选项n)
#创建空元组
t1 = ()
print(t1)
# 定义带元素的元组
# 元素类型可以不同
t2 = (1,2,3,4,5,"good")
print(t2)
# 定义含有一个元素的元组
# 注意:加个逗号
t3 = (1,)
print(t3)



'''
元组元素的访问
'''
#取值  元组名[下标]
t4 = (1,2,3,4,5)
print(t4[1])
# print(t4[5]) #下标越界
print(t4[-1])
print(t4[-5])
# print(t4[-6])  # 下标越界
#修改元组,元组的元素不能修改,但是元素如果是个列表那么可以修改这个列表
t5 = (1,2,3,4,5,[6,7,8])
# t5[5] = [8,7,6]
t5[5][1] = 100
print(t5)



'''元组的操作'''
#元祖的组合
t6 = (1,2,3)
t7 = (4,5,6)
print(t6 + t7)
#元组重复
print(t6 * 3)
# 元组截取(切片)
# 与列表、字符串向类似
t8 = (1,2,3,4,5,6,7,8,9)
print(t8[2:7])




'''元组的方法'''
# len(tuple)
# 返回元组的元素个数
t9 = (1,2,3)
print(len(t9))

# max(tuple)
# min(tuple)

# tuple(seq)
# 将集合转为元组
l = [1,2,3,4,5,6]
t10 = tuple(l)
print(t10)


三、条件控制语句

# -*- coding:utf-8 -*-

'''
if语句
'''

'''
if-else 语句
'''

'''
if-elif-else语句

格式:
if 表达式1:
    语句1
elif 表达式2:
    语句2
……
elif 表达式n:
    语句n
else:
    语句e


逻辑:当程序执行到if-elif-else语句时,首先计算“表达式1”的值,如果“表达式1”的值为真,则执行“语句1”,执行完“语句1”则结束整个if-elif-else语句继续向下执行。如果“表达式1”的值为假,则计算“表达式2”的值,如果“表达式2”的值为真,则执行“语句2”,执行完“语句2”则结束整个if-elif-else语句继续向下执行。如果“表达式2”的值为假,则计算“表达式3”的值。如此进行下去,直到某个表达式的值为真为止。如果所有的表达式都为假,且有else语句则执行“语句e”

深刻理解(精髓):每一个(else if)else都是对它上面所有表达式的否定
'''
'''
从该控制台输入一个年龄
小于0    输入有误
0~1      婴儿
2~6      幼儿
7~14     儿童
15~18    少年
19~30    青年
31~40    壮年
41~50    中年
51~150   老年
151~     妖精
'''

age = int(input("输入一个年龄:"))
# if age <= 0:
#     print("输入错误")
# if  age > 0 and age <= 1:
#     print("婴儿")
# if  age >= 2 and age <= 6:
#     print("幼儿")
# if  age >= 7 and age <= 14:
#     print("儿童")
# if  age >= 15 and age <= 18:
#     print("少年")
# if  age >= 19 and age <= 30:
#     print("青年")
# if  age >= 31 and age <= 40:
#     print("壮年")
# if  age >= 41 and age <= 50:
#     print("中年")
# if  age >= 51 and age <= 150:
#     print("老年")
# if  age > 150:
#     print("妖怪")


# if age <= 0:
#     print("输入错误")
# elif  age > 0 and age <= 1:
#     print("婴儿")
# elif  age >= 2 and age <= 6:
#     print("幼儿")
# elif  age >= 7 and age <= 14:
#     print("儿童")
# elif  age >= 15 and age <= 18:
#     print("少年")
# elif  age >= 19 and age <= 30:
#     print("青年")
# elif  age >= 31 and age <= 40:
#     print("壮年")
# elif  age >= 41 and age <= 50:
#     print("中年")
# elif  age >= 51 and age <= 150:
#     print("老年")
# else:
#     print("妖怪")




if age <= 0:
    print("输入错误")
elif  age <= 1:
    print("婴儿")
elif  age <= 6:
    print("幼儿")
elif  age <= 14:
    print("儿童")
elif  age <= 18:
    print("少年")
elif  age <= 30:
    print("青年")
elif  age <= 40:
    print("壮年")
elif  age <= 50:
    print("中年")
elif  age <= 150:
    print("老年")
else:
    print("妖怪")

四、循环语句 - while

# -*- coding:utf-8 -*-

'''
格式:
while 表达式:
    语句

逻辑:当程序执行到while语句时,首先计算表达式的值,如果表达式的值为假,则跳过整个while语句继续向下执行。如果表达式的值为真,则执行语句,执行完语句再计算表达式的值。如果表达式的值为假,则跳过整个while语句继续向下执行。如果表达式的值为真,则执行语句,执行完语句在计算表达式的值,如此循环往复直到表达式的值为假才停止。
'''

# 打印10此 Martin is a good man
index = 0
while index < 5:
    print("Martin is a good man")
    index += 1


# 求1+2+3+……+100的和
index = 1
sum = 0
while index <= 100:
    sum = sum + index
    index += 1
print("sum = %d"%sum)



# 死循环:表达式永远为真的循环
# while 1:
#     print("Martin is a good man")


'''使用else语句 
格式:
while 表达式:
    语句1
else:
    语句2    

逻辑:在表达式的值为False时执行else语句中的语句2
'''
a = 1
while a < 5:
    print("Martin is a nice man")
    a += 1
else:
    print("Martin is a good man")

五、循环语句 - for

# -*- coding:utf-8 -*-
'''
格式:
for 变量 in 集合:
    语句

逻辑:当程序执行到for语句时,按顺序取“集合”中的每个元素赋值给“变量”,在执行“语句”。如此循环往复,直到取完集合中的元素为止。
'''
for x in [1,2,3,4,5]:
    # print("x = %d"%x)
    print("Martin is a good man")


# range([startNum,]endNum[, step])
# 列表生成器
# startNum:开始的数字,默认为0
# endNum:结束的数字,不包含在内
# step: 步长,默认为1
# [1,2,3,4,5]
for x in range(1, 6):
    print("x = %d"%x)



#1+2+3……+100
sum = 0
for i in range(1, 101):
    sum += i
print("sum = %d"%sum)



# 同时遍历下标和元素
for index, x in enumerate([1,2,3,4,5]):
    print(index, x)



a, b = (1, 2)
print(a)
print(b)

六、pass语句和continue语句与break语句

# -*- coding:utf-8 -*-


'''pass语句
作用:当语句要求不希望任何命令或代码来执行
说明:pass语句是一个空操作,在执行时没有任何响应。pass也是代码最终会用的,但是暂时写不出来
使用在 if语句、while语句、for语句、函数、类等位置
'''
if 1:
    pass
for x in [1,2,3]:
    pass




'''break
作用:跳出循环
注意:只能跳出距离最近的for或者while
'''
for x in [1,2,3,4,5]:
    if x == 3:
        break
    print("x = %d"%x)
# print("-------------------")
# for m in [1,2,3,4,5]:
#     print("m = %d"%m)
#     for n in [1,2,3,4,5]:
#         if n == 3:
#             break
#         print("n = %d"%n)


# 循环语句可以有else子句,表达式错误导致循环终止时被执行,但循环被break终止时else语句不执行
index = 0
while index < 3:
    print("index = %d"%index)
    index += 1
    if index == 1:
        break
else:
    print("循环结束了")


print("---------------------------------")
'''continue
作用:跳过本次循环块中的剩余语句,然后继续下一次循环
注意:只能跳过距离最近的for或者while
'''
for x in [1,2,3,4,5]:
    if x == 3:
        continue
    print("x = %d"%x)
print("-------------------")

# 代码嵌套,层级要明确,嵌套最多在6、7层左右,最好3层
for m in [1,2,3,4,5]:
    print("m = %d"%m)
    for n in [1,2,3,4,5]:
        if n == 3:
            continue
        print("n = %d"%n)

————————————————
版权声明:本文为【PythonJsGo】博主的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
博主主页:https://my.oschina.net/u/3375733

本篇文章同步在个人公众号:

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部