索引和函数enumerate; # 我们经常会遇见这样的情况:将一个列表打印出来,并在前面加上序号
import random
my_list = []
for i in range(10):
my_list.append(random.randint(0, 100))
# 方法1:使用range函数和列表来实现
for i in range(len(my_list)):
print(i + 1, my_list[i])
# 方法2:通过变量来实现
m = 1
for i in my_list:
print(m, i)
m += 1
# 方法3:通过enumerate函数实现
for index, p_str in enumerate(my_list, 1):
print(index, p_str)
# 前面两种方法就不详细说了,重点说第三种里面的enumerate函数
'''
for index, p_str in enumerate(my_list, 1):
print(index, p_str)
1:for 里面的迭代器有两个index 和p_str 其中index表示需要的序号,
p_str则是my_list里面的内容
2:enumerate 函数也是传递了两个参数,第一个是列表,第二个是序号的起始数字
3:需要注意的是关键字 in 前面的两个参数的顺序和
enumerate函数里面的两个参数的顺序并不是一样的
'''
再谈 字符串方法format
# 一:简单格式的设置
info = 'my name is {}.'
print(info.format('子永'))
# 输出结果为 my name is 子永.
# 二:设置字段宽度----{:n}
info = 'my name is {:4}.'
print('**************************') # 用作对比
print(info.format('子永'))
"""
上面语句的运行结果,注意'.'的位置
**************************
my name is 子永 .
"""
# 三:在设置字段宽度的前提下设置对其方式
# 右对齐-->{:>n} 左对齐-->{:{:^n}
# 我们设置字段宽度为五个字符并分别以三种对其方式,打印10以内的奇数
# 右对齐-----注意,数字字段的默认对其方式是右对齐,所以{:
print("*****") # 对比
for i in range(1, 10, 2):
print('{:>5}'.format(i))
# 左对齐-----注意对非数字字段而言,默认是左对齐,所以{:
for i in range(1, 10, 2):
print('{:<5}'.format(i))
# 居中
for i in range(1, 10, 2):
print('{:^5}'.format(i))
简单的列表推导式 # 先来看一个简单的例子 我们需要将old_list里面的每个元素的平方生成一个新的列表
old_list = [1, 2, 3, 4, 5]
new_list = [i ** 2 for i in old_list] # 只需要这一行代码就搞定
print(old_list)
print(new_list)
"""
输出结果
[1, 2, 3, 4, 5]
[1, 4, 9, 16, 25]
我们用文字来表述一下
新列表 = [表达式 for循环头]
new_list = [i ** 2 for i in old_list]
那么对上面这个列表推导式的解释应该就是:
对old_list里面的每个i 都将它平方后追加到new_list列表里面
"""
二维列表推导式 """
形式: new_list=[表达式 for语句1 for语句2]
我们可以理解为
new_list=[]
for语句1:
for语句2:
new_list.append(表达式)
"""
# 看一个例子
new_list = [i * j for i in range(1, 3) for j in range(1, 3)]
print(new_list)
# 打印的结果为 [1, 2, 2, 4] 其实是[1*1,1*2,2*1,2*2]
# 上面的二维列表推导式相当于下面的语句
new_list = []
for i in range(1, 3):
for j in range(1, 3):
new_list.append(i * j)
包含条件的列表推到式
"""
形式 新的列表=[表达式 for循环1~n 条件]
这里面for循环可以出现多次,所以我用1~n表示
多个for循环就表示式多嵌套
"""
# 看一个例子---我们对上面那个例子添加一个条件
new_list = [i * j for i in range(1, 4) for j in range(1, 4) if i > j]
print(new_list) # 这里的输出结果是 [2, 3, 6]
# 对上面的列表推导式的等价为
new_list1 = []
for i in range(1, 4):
for j in range(1, 4):
if i > j:
new_list1.append(i * j)
print(new_list1) # 这里的输出结果是 [2, 3, 6] 可以看出来和上面一
集合简介---set{}
"""
1 集合中的元素必须是独一无二的,相同的值不能出现两次,这个和列表不同
2 集合中元素的顺序是无关紧要的 即{1,2,3}和{3,2,1}是相同的
3 集合显示时 通常是以一定的顺序显示的
"""
# 集合的定义---{}
a = {1, 2, 3}
b = {3, 2, 1}
print(a)
print(type(a))
print(b)
print(a == b)
"""
输出结果为
{1, 2, 3}
{1, 2, 3}
True
我们可以看出,对与集合a和集合b而言,当给它们打印出来的时候,
它们显示的是一样的
"""