如何在Python中维护20个值的列表的同时将iter的值更改为center

2022-10-02 02:53:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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位,这样20的原始值也将具有与输出相同数量的20值

列表输出后:

list = [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)

Tags: inmod列表for数量ifcounterrange解决方案csadlistvaluesprintorig
3条回答
网友
1楼 ·

我将list变量更改为origmodified

orig = [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]

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

说明:

  • [0] * n给出n个零的数组
  • 20 - len(orig)给出orig数组中小于20的零数。你知道吗
  • [1, 2, 3] + [4, 5, 6]将两个数组连接起来,得到[1, 2, 3, 4, 5, 6]
网友
2楼 ·

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

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”是一个保留关键字,所以我将它设置为另一个变量。你知道吗

网友
3楼 ·

你也可以要求numpy来处理这个任务。你知道吗

假设您要查找的固定长度为20:

import numpy as np

np.pad(lists, (20-len(lists),0), 'constant', constant_values=0)

说明:

np.pad将在数组左侧添加一个常量,在本例中是0,以确保长度为20(20-len(lists))。你知道吗

输出:

array([  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])