蜘蛛侠001 2023-07-16 17:52 采纳率: 95%
浏览 48
已结题

python 列表排序求平均值,(有点难度)

我有一个这样的列表

[['1号', '111.00', '黑|咖', 'nhdfjn'],
['英国', '110.00', '黑|白', 'nhdfjn'],
['客服口袋酒叟', '123.00', '祖母石绿|咖', 'nhdfjn'],
['AMG运动包', '电议', '黑|咖', 'nhdfjn'],
['dfdfd', '102.06', '黑|咖', 'nhdfjn'],
['辅导费郭德纲', '115.36', '黑|白', 'nhdfjn'],
['sjdisjmdi', '108.36', '祖母石绿|咖', 'nhdfjn']]

有什么方法能得到这样的结果:
电议 可以看成 0

[['1号', '111.00', '黑|咖', 'nhdfjn'],
['AMG运动包', '电议', '黑|咖', 'nhdfjn'],
['dfdfd', '102.06', '黑|咖', 'nhdfjn'],
[' ','平均值', '黑|咖', ' '],
['英国', '110.00', '黑|白', 'nhdfjn'],
['辅导费郭德纲', '115.36', '黑|白', 'nhdfjn'],
[' ','平均值', '黑|白', ' '],
['客服口袋酒叟', '123.00', '祖母石绿|咖', 'nhdfjn'],
['sjdisjmdi', '108.36', '祖母石绿|咖', 'nhdfjn']
[' ','平均值', '祖母石绿|咖', ' ']
]

  • 写回答

2条回答 默认 最新

  • a5156520 2023-07-16 20:07
    关注

    这个题目和前一题有类似的地方,稍微修改了,你看看是不是你要求解的那种结果?

    代码如下:

    参考链接:

    
    
    
    
    
    goods= [['1号', '111.00', '黑|咖', 'nhdfjn'],
    ['英国', '110.00', '黑|白', 'nhdfjn'],
    ['客服口袋酒叟', '123.00', '祖母石绿|咖', 'nhdfjn'],
    ['AMG运动包', '电议', '黑|咖', 'nhdfjn'],
    ['dfdfd', '102.06', '黑|咖', 'nhdfjn'],
    ['辅导费郭德纲', '115.36', '黑|白', 'nhdfjn'],
    ['sjdisjmdi', '108.36', '祖母石绿|咖', 'nhdfjn']]
    
    
    #print(goods)
    
    nextcolor=goods[0][2]
    b_list=[]
    length=0
    # 按顺序将相同元素逐个添加到列表b_list
    while length<len(goods): # 将列表a_list的元素全部按相同顺序添加到b_list
    
        nextfind=0 #  下一个颜色是否找到的标记
        color=nextcolor
        for item in goods: # 遍历a_list
             # 如果当前元素和前一个元素的颜色相同
             # 则将当前元素添加到b_list
            if color == item[2]:
                b_list.append(item)
                length=length+1 # 添加了的元素计数器+1
              #  print("in if,length=",length,",item=",item,",b_list=",b_list)
            else: # 如果和前一个元素的颜色不同
                if nextfind==0  : # 并且下一个颜色还未找到
                    nextcolor=item[2]
    
                    find=0
                    # 则遍历已经添加的元素列表
                    # 寻找当前的元素颜色是否存在于b_list
                    for item2 in b_list:
                        if nextcolor == item2[2]:
                            find=1
                            break
                    # 如果不存在,则下一个颜色为当前元素颜色
                    if find==0:
                        nextfind=1
                        nextcolor=item[2]
                       # print("in find if ,nextcolor=",nextcolor)
    
    #print()
    #for item in b_list:
    #    print(item)
    #print()
                    
    
    
    #print(a_list)
    num=0
    avg=0
    color=b_list[0][2]
    result = []
    # https://blog.csdn.net/nongcunqq/article/details/116291267
    for index,item in enumerate(b_list): # 遍历列表
        # 如果当前元素和前一个元素颜色相同
        # 则将其添加到结果列表
        if color == item[2]:
            
            result.append(item)
            if item[1]=='电议':
                avg = avg + 0
            else:
                # https://blog.csdn.net/sonia_liss/article/details/96325710
                avg = avg + float(item[1]) # 将当前颜色对应的数值添加到avg变量
            num=num+1  # 相同计数器+1
            
             # 如果 此元素为数组最后一个元素
             # 则将此元素的平均值结果添加到结果列表
            if index == (len(goods)-1): 
                avg = avg/num
                result.append(['',avg,item[2],''])
           # print("in if, item=",item,",color=",color,',num=',num,",result=",result)
           
        else: #  如果当前元素和前一个元素颜色不同
            
                       
            avg = avg/num # 则计算前一个元素的平均值     
            result.append(['',avg,color,''])  # 将前一个元素的平均值结果添加到结果列表
          #  print("in else, item=",item,",color=",color,',num=',num,",result=",result)
            color=item[2]  # 前一个颜色赋值为当前元素的颜色
            
            num=1  #  相同计算器赋值为1
            # 当前颜色平均值赋值为当前元素的值
            if item[1]=='电议':
                avg = 0
            else:
                # https://blog.csdn.net/sonia_liss/article/details/96325710
                avg =  float(item[1]) # 将当前颜色对应的数值添加到avg变量
                 
            result.append(item)  # 将当前元素添加到 结果列表
    
            # 如果当前元素为列表最后一个元素
            # 则将当前元素的平均值结果添加到结果列表
            if index == (len(goods)-1):
                result.append(['',avg,color,''])
                
    
    for item in  result:
        print(item)
        
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月25日
  • 已采纳回答 7月17日
  • 创建了问题 7月16日

悬赏问题

  • ¥15 C++ 句柄后台鼠标拖动如何实现
  • ¥15 有人会SIRIUS 5.8.0这个软件吗
  • ¥30 comsol仿真等离激元
  • ¥15 静电纺丝煅烧后如何得到柔性纤维
  • ¥15 (标签-react native|关键词-镜像源)
  • ¥100 照片生成3D人脸视频
  • ¥15 伪装视频时长问题修改MP4的时长问题,
  • ¥15 JETSON NANO
  • ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理
  • ¥20 关于 openpyxl 处理excel文件地问题