说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 在对序列(可迭代对象)使用 for 循环进行迭代时,大部分情况是没有序号的,只能拿到值。如果想对序列中的第一个元素和最后一个元素进行特别的处理那应该怎么做呢?今天我们就来探讨一下这个问题。
这种方法非常方便,先标记为是第一个,然后按迭代顺序,迭代完修改为不是第一个,这样就实现了对第一个元素的识别处理,参考代码如下:
items = [5, 1, 2, 4]
first = True
for i in items:
if first:
first = False
print('first', i)
else:
print(i)
'''
first 5
1
2
4
'''
以上只能实现首个元素的检测,无法做到最后一个元素的检测,我们再尝试其他方法。
可以设置一个计数器,这个计数器从 0 开始,每次进行迭代计数器加一,计数 1 时为首个元素,计数为序列长度时为最后一个:
items = [5, 1, 2, 4]
count = 0
for i in items:
count +=1
if count==1:
print('first', i)
elif count==len(items):
print('last', i)
else:
print(i)
'''
first 5
1
2
last 4
'''
Python 的内置函数 enumerate() 能给可迭代变量给一个索引值,利用这个索引值,可以编写我们的逻辑:
items = [5, 1, 2, 4]
for i, v in enumerate(items):
if i==0:
print('first', v)
elif i==len(items)-1:
print('last', v)
else:
print(i)
'''
first 5
1
2
last 4
'''
将数据构造为 Pandas 的 Series 然后利用其相关方法进行判断。Series.items()
将惰性迭代(索引、值)元组。如果索引值为最小时为首个元素,最大时为最后一个元素:
import pandas as pd
items = [5, 1, 2, 4]
ser = pd.Series(items)
for i, v in ser.items():
if i == ser.index.min():
print('first', v)
elif i == ser.index.max():
print('last', v)
else:
print(i)
'''
first 5
1
2
last 4
'''
使用 Pandas 后我们可以看到,逻辑更加清楚,语义更加明确。
(完)
更新时间:2021-11-09 23:59:45 标签:python for循环