enumerate
是 Python 中的一个内置函数,它用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,通常用在 for
循环当中。使用 enumerate
可以同时获取到每个元素的索引和值,这在很多情况下都非常有用。
下面是一个使用 enumerate
的例子:
fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):
print(index, fruit)
这段代码会输出:
0 apple
1 banana
2 cherry
同样用for循环也可以表示:
i = 0
seq = ['one', 'two', 'three']
for element in seq:
print i, seq[i]
i += 1
0 one
1 two
2 three
- 逆序转二进制,权值计算,使用enumerate()函数。
binary_number = "1101"
decimal_number = 0
for i, digit in enumerate(binary_number[::-1]): #同时输出index 和 值
decimal_number += int(digit) * (2 ** i)
print(decimal_number)
2.正序
s="1010/1100/"
ans,t=0,0
for i in s:
if "0"<=i<="1":
t=t*2+int(i)
else:
ans+=t
t=0#当遇到/时t清零,以便下一个字节的计算
print(ans)
3.for循环 逆序,与1有异曲同工之妙。
binary_number = '1010'
decimal_number = 0
# 从二进制数的最后一位开始遍历
for i in range(len(binary_number) - 1, -1, -1):
# 获取当前位的值('0' 或 '1'),并将其转换为整数
bit = int(binary_number[i])
# 计算当前位的十进制值,并累加到结果中
decimal_number += bit * (2 ** (len(binary_number) - 1 - i))
print(decimal_number)
4.知识拓展之reversed()
def my_reversed(seq):
"""模拟 reversed() 函数的行为"""
# 获取序列的长度
length = len(seq)
# 定义一个生成器函数,用于逆序迭代序列
def reverse_iterator():
# 从序列的最后一个元素开始迭代
for i in range(length - 1, -1, -1):
yield seq[i]
# 返回生成器对象
return reverse_iterator()
# 测试模拟的 reversed() 函数
binary_number = '1010'
for bit in my_reversed(binary_number):
print(bit, end='')
0101 输出结果