平时的时候喜欢研究Python,用Python处理一些繁琐的事是很合适的选择。相比较Java和C++,Python是门有趣的语言,对我来说也入门容易些。下面把遇到的一个小案例和一个网上经常看到的列表操作,和大家分享下。
case1:
存在这样的一组数,
b = [0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 1, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 0, 1, 2, 3, 4, 0, 1, 2, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 4, 0]
另一数据框df idx name 0 张1 1 张2 2 张3 3 张4 4 张5 5 张6 6 张7 7 张8 8 张9 9 张10 10 张11每次b中0开始的数,都要与另一个文件df的索引列进行关联,即idx=0,b[0]=张1,b[1:28]=张2,b[29]=张3,以此类推。。。
第一想法是for遍历,建立函数如下:
def indextocolumn(a): for i in range(0, len(a) - 1): if a[i + 1] == a[i]: if a[i + 1] == 0: a[i + 1] = a[i] + 1 else: a[i + 1] = a[i] elif a[i + 1] < a[i]: if a[i + 1] != 0: a[i + 1] = a[i] else: a[i + 1] = a[i] + 1 elif a[i + 1] > a[i]: a[i + 1] = a[i] i += 1 return a执行代码:
print indextocolumn(b)
结果如下:
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 8, 8, 8, 8, 8, 9, 9, 9, 10, 11, 12, 13, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18, 19]
后面的只需转换类型,利用pandas的merge函数关联即可
case2:
存在这样的一列表,
a = [3, 4, 6, 2, 1, 9, 0, 7, 5, 8]从第一个数字3开始,左到右,与前一个数字比较,保留最大数字在当前位置,效果如下:
a = [3, 4, 6, 6, 6, 9, 9, 9, 9, 9]建立函数:
def haha(b): a=0 for i in b: a=max(i,a) yield a结果同效果列表