首页 > 解决方案 > 如何在Python中保持20个值的列表的同时将iter值的变化更改为居中

问题描述

list = [0,0,0,0,0,0,0,0,100.2,112.3,132.3,133.5,134.5,136.2,136.3,138.3,138.5,139.5]

我想在前几个索引处添加值“0”以使上升值(0 到 100.2)位于中间,例如,列表的长度为 20 我试图通过删除将上升值置于第 10 位从列表后面的最后 2 个索引中添加等量的值,以便原始值 20 也将具有与输出相同数量的 20 值

集中列表输出后:

列表 = [0,0,0,0,0,0,0,0,0,0,100.2,112.3,132.3,133.5,134.5,136.2,136.3,138.3,138.5,139.5]

我已经解决了这个解决方案的问题。我得出的答案如下:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Dec 13 17:09:59 2019

@author: lzh
"""
from collections import Counter

orig = [0,0,0,0,0,0,0,0,0,0,0,0,100.2,112.3,132.3,133.5,134.5,136.2,136.3,138.3]

ad = []

c=Counter(orig)

c.values()
print(c.values())
cs = list(c.values())

if cs[0] < 10:
    mod = (10 - cs[0])*[0] + (orig)

    for i in range((10 - cs[0])):

        mod.pop()

if cs[0] > 10:

    for x in range((cs[0] - 10)):
        ad.append(orig[-1])
    mod = (orig) + (ad)
    for i in range((cs[0]-10)):
        del mod[0]

#modified = ([0] * (20 - len(orig))) + (orig)
print(mod)

标签: python

解决方案


要扩展到特定大小,请反转列表,填充所需的值,然后再次反转列表:

mylist=list
mylist.reverse() 
mylist.extend([0] * (20 - len(mylist)))
mylist.reverse() 

# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100.2, 112.3, 132.3, 133.5, 134.5, 136.2, 136.3, 138.3, 138.5, 139.5]

'list' 也是一个保留关键字,所以我将它设置为不同的变量。


推荐阅读