在每个现有元素之后在列表中插入固定数量的元素

时间:2017-04-21 20:46:03

标签: python python-2.7

我有一个ip地址列表:

ip_list = ['10.7.0.151', '10.7.0.152', '10.7.0.153', '10.7.0.154', '10.7.0.155', '10.7.0.156', '10.7.0.157', '10.7.0.158']

我需要插入6个null元素和' Total'在所有ip地址元素之后的相同列表中:

ip_list = ['10.7.0.151', '', '', '', '', '', '', 'Total', 
           '10.7.0.152', '', '', '', '', '', '', 'Total',
            . . .
           '10.7.0.158', '', '', '', '', '', '', 'Total']

有人可以建议是否有任何方式以上述方式插入元素?或者我需要拿这个硬编码列表?

3 个答案:

答案 0 :(得分:2)

列表理解应该这样做。通过将新项添加到ip创建一个新的iterable,然后在理解中用嵌套for解包:

var index = 0;
var data = new FormData();
data.append("datalist", JSON.stringify(formInfo)); //list of objects
data.append("form", JSON.stringify(headerInfo));   //object

var images = document.getElementsByClassName("ImageUpload");
for (var i = 0; i < images.length; i++){
    var files = $(images[i]).prop("files");
    if (files != null && files.length > 0){
        for (var e = 0; e < files.length; e++){
            //append the image with a filename
            data.append("image" + ++index, files[e]);
        }
    }
}
UpdateData(data);

function UpdateData(datalist) {
    $.ajax({
        url: '@Url.Action("UpdateData", "Home")',
        type: "POST",
        cache: false,
        contentType: false,
        processData: false,
        datatype: "JSON",
        data: datalist,
        success: function (result) {
            //do stuff
        }
    });
}

答案 1 :(得分:0)

我会产生第二个列表,通过迭代第一个列表并在每个传递上附加必要的元素:

original_list = ['1.2.3.4', '5.6.7.8']
extended_list = []

for item in original_list:
    extended_list.append(item)
    for i in xrange(6): extended_list.append('')
    extended_list.append('Total')

有一千个聪明的单行可以实现同样的目标,但这很简单,也很灵活。

答案 2 :(得分:0)

mapreduce

from functools import reduce    # python3+


reduce(lambda m,n: m+n, map(lambda x: [x]+['']*6+['Total'], ip_list))

我希望这会有所帮助。