python列表解析、字典解析与集合解析学习探究

列表解析

简单列表解析
# 生成一个数组
arr = np.arange(10)

i*2是自己想生成的值,这里是作为表达式的作用,for循环里面给表达式提供值,arr是一个ndarray

# 开始列表解析
ls = [i * 2 for i in arr]
print(ls)

console>>>
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

同时在解析里面我们也可以对其进行判断再赋值

ls = [i * 3 for i in arr if i > 4]
print(ls)

console>>>
[15, 18, 21, 24, 27]

对于表达式我们同样可以进行判断再赋值,但是在下面赋值的是Boolean类型

ls = [i > 5 for i in arr]
print(ls)

console>>>
[False, False, False, False, False, False, True, True, True, True]
多次循环列表解析

先预先定义变量,其中ls是列表,tup是元组,st是集合

ls = [2, 4, 5, 6, 7]
tup = (7, 8, 9, 10)
st = {4, 5}

先对tup进行循环再对ls进行进行循环,即7+2,8+2…

ls = [x + y for x in ls for y in tup]
print(ls)

console>>>
[9, 10, 11, 12, 11, 12, 13, 14, 12, 13, 14, 15, 13, 14, 15, 16, 14, 15, 16, 17]
# 三次循环
ls = [x+y+z for x in ls for y in tup for z in st]
print(ls)

console>>>
[20, 21, 21, 22, 22, 23, 23, 24, 21, 22, 22, 23, 23, 24, 24, 25, 22, 23, 23, 24, 24, 25, 25, 26, 23, 24, 24, 25, 25, 26, 26, 27, 22, 23, 23, 24, 24, 25, 25, 26, 23, 24, 24, 25, 25, 26, 26, 27, 24, 25, 25, 26, 26, 27, 27, 28, 25, 26, 26, 27, 27, 28, 28, 29, 23, 24, 24, 25, 25, 26, 26, 27, 24, 25, 25, 26, 26, 27, 27, 28, 25, 26, 26, 27, 27, 28, 28, 29, 26, 27, 27, 28, 28, 29, 29, 30, 24, 25, 25, 26, 26, 27, 27, 28, 25, 26, 26, 27, 27, 28, 28, 29, 26, 27, 27, 28, 28, 29, 29, 30, 27, 28, 28, 29, 29, 30, 30, 31, 25, 26, 26, 27, 27, 28, 28, 29, 26, 27, 27, 28, 28, 29, 29, 30, 27, 28, 28, 29, 29, 30, 30, 31, 28, 29, 29, 30, 30, 31, 31, 32]

字典解析

假设我们要实现如下需求:
有20个学生,每个学生的成绩都在60分到100分之间,我们希望取出所有80分以上学生的成绩,并且把学生的成绩和姓名存储在字典中

# 生成了20个学生,每个学生都有成绩
dict1 = {"student" + str(i): random.randint(60, 100) for i in range(20)}
print(dict1)

console>>>
{'student0': 75, 'student1': 93, 'student2': 69, 'student3': 68, 'student4': 91, 'student5': 69, 'student6': 92, 'student7': 83, 'student8': 99, 'student9': 81, 'student10': 60, 'student11': 72, 'student12': 70, 'student13': 68, 'student14': 100, 'student15': 88, 'student16': 90, 'student17': 100, 'student18': 66, 'student19': 83}


# dict1.items()返回的是可遍历的元组数组
# [("student0":75),("student1",93)...]
dict2 = {key: value for key, value in dict1.items() if value > 80}
print(dict2)

console>>>
{'student1': 93, 'student4': 91, 'student6': 92, 'student7': 83, 'student8': 99, 'student9': 81, 'student14': 100, 'student15': 88, 'student16': 90, 'student17': 100, 'student19': 83}

集合解析

col = {i for i in range(10)}
print(col)

console>>>
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值