Pon*_*ngo 8 python reverse loops
我想迭代从 Digikey api 接收到的数据列表,任何谷歌搜索都没有太多运气,因为该功能enumerate(reversed(part.standard_pricing))
不起作用,并且part.standard_pricing
由于某种原因您无法逆转类似的事情是需要的:
for b_idx in range(part.standard_pricing, -1, -1):
print(f"Test at: {b_idx} , Q: {part.standard_pricing[b_idx].break_quantity}")
if PCountQ >= part.standard_pricing[b_idx].break_quantity:
parts_df['PRICE_PER_PCB_Q'][idx] = part.standard_pricing[b_idx].unit_price * PCountQ
break
Run Code Online (Sandbox Code Playgroud)
但范围也不适用于列表......
我想这样做:
for b_idx, price_break in enumerate(part.standard_pricing):
Run Code Online (Sandbox Code Playgroud)
只是从末尾开始part.standard_pricing
,让索引减少而不是增加
关于如何以Python方式做到这一点有什么想法吗?
The*_*Guy 11
您可以调用enumerate
列表,然后将枚举对象转换为列表,它将给出元组列表,其中每个元组都有索引和值,最后迭代reversed
列表。
data = [1,2,3,4]
for i,d in reversed(list(enumerate(data))):
print(i,d)
3 4
2 3
1 2
0 1
Run Code Online (Sandbox Code Playgroud)
如果您不希望内存中存在序列的另一个副本,您可以创建自定义生成器。
def reverseEnum(data: list):
for i in range(len(data)-1, -1, -1):
yield (i, data[i])
for i, d in reverseEnum([1, 2, 3, 4]):
print(i, d)
3 4
2 3
1 2
0 1
Run Code Online (Sandbox Code Playgroud)
我们也可以reverse
使用列表并对索引使用一些数学运算,而不是d 列表:enumerate
enumerate
reversed
the_list = ["zeroth", "first", "second"]
length = len(the_list)
for j, value in enumerate(reversed(the_list), start=1):
# "the" index is this
i = length - j
print(i, value)
Run Code Online (Sandbox Code Playgroud)
要得到
2 second
1 first
0 zeroth
Run Code Online (Sandbox Code Playgroud)
您还可以使用 fori = -j
和 get -1, -2, -3
,当索引时,它们分别给出相同的值2, 1, 0
。
归档时间: |
|
查看次数: |
9616 次 |
最近记录: |