Python相邻元素按位与计算索引越界及列表推导式用法咨询
列表索引越界问题修复
你遇到的错误是因为循环的索引范围设置错误:当i取到列表最后一个索引时,i+1超出了列表的最大索引范围。将循环范围改为range(len(a)-1)即可修复,修正后的代码如下:
a = [123, 456, 654, 4] arr = [] for i in range(len(a)-1): ass = a[i] & a[i+1] arr.append(ass) print(arr) # 输出 [72, 8, 0]
相邻元素同类运算实现
加减乘等同类运算只需要替换对应的运算符即可:
- 加法:
a[i] + a[i+1],输出结果为[579, 1110, 658] - 减法:
a[i] - a[i+1],输出结果为[-333, -198, 650] - 乘法:
a[i] * a[i+1],输出结果为[56088, 298224, 2616] - 按位或:
a[i] | a[i+1],输出结果为[507, 1102, 654] - 按位异或:
a[i] ^ a[i+1],输出结果为[435, 1094, 654]
Python列表推导式常见用法汇总
列表推导式可以用更简洁的语法生成列表,常见用法如下:
- 基础序列生成:按照固定规则生成序列
# 生成1-10的平方序列 [i**2 for i in range(1, 11)] - 带过滤条件的生成:只保留符合规则的元素
# 提取1-20中的偶数 [i for i in range(1, 21) if i % 2 == 0] - 多序列并行计算:结合zip遍历多个列表进行运算
list1 = [1,2,3] list2 = [4,5,6] [x + y for x,y in zip(list1, list2)] - 相邻元素运算:适用于本次的相邻元素计算场景
a = [123,456,654,4] [a[i] & a[i+1] for i in range(len(a)-1)] - 二维列表降维:将嵌套的二维列表展开为一维
two_dim = [[1,2],[3,4],[5,6]] [num for row in two_dim for num in row] - 带条件分支的生成:根据不同条件生成不同值
# 偶数保留原值,奇数乘以3 [i if i%2 ==0 else i*3 for i in range(10)]
== True相关用法说明
== True是合法的Python语法,用于显式判断值的布尔等价性,使用注意事项如下:
- 普通布尔判断场景下,
if 变量:和if 变量 == True:效果一致,前者写法更简洁,是更推荐的写法 - Python中存在真值等价规则,非布尔类型的真值也会和
True相等,比如1 == True返回True,"test" == True返回True - 如果需要严格判断变量是否为布尔类型的
True,应该使用is True语法,比如1 is True返回False,True is True返回True
内容的提问来源于stack exchange,提问作者rishikumar J
相关产品推荐
相关产品推荐

