在Python中将整数附加到列表的开头

时间:2013-07-28 17:54:34

标签: python list variables append

我有一个整数和一个列表。我想创建一个以变量开头并以列表结尾的新列表。 写a + list我收到错误。编译器将a作为整数处理,因此我不能使用append或extend。 你会怎么做?

9 个答案:

答案 0 :(得分:510)

>>>var=7
>>>array = [1,2,3,4,5,6]
>>>array.insert(0,var)
>>>array
[7, 1, 2, 3, 4, 5, 6]

工作原理:

array.insert(index, value)

在指定位置插入项目。第一个参数是要插入的元素的索引,因此array.insert(0, x)插入列表的前面,array.insert(len(array), x)等同于array.append(x)。否定值被视为相对的到数组的末尾。

答案 1 :(得分:503)

>>> a = 5
>>> li = [1, 2, 3]
>>> [a] + li  # Don't use 'list' as variable name.
[5, 1, 2, 3]

答案 2 :(得分:37)

另一种做同样的方法,

list[0:0] = [a]

答案 3 :(得分:1)

只需将列表添加到一起即可制作新列表。

list1 = ['value1','value2','value3']
list2 = ['value0']
newlist=list2+list1
print(newlist)

答案 4 :(得分:1)

基于使用timeit模块的一些(最低)基准,似乎以下内容的性能甚至比公认的答案还要好

new_lst = [a, *lst]

[a] + list一样,这将创建一个新列表,而不会使lst发生变异。

如果您打算更改列表,请使用lst.insert(0, a)

答案 5 :(得分:1)

您可以使用“拆箱清单”:

  

a = 5

     

li = [1,2,3]

     

li = [a,* li]

     

=> [5,1,2,3]

答案 6 :(得分:1)

替代:

>>> from collections import deque

>>> my_list = deque()
>>> my_list.append(1)       # append right
>>> my_list.append(2)       # append right
>>> my_list.append(3)       # append right
>>> my_list.appendleft(100) # append left
>>> my_list

deque([100, 1, 2, 3])

>>> my list[0]

100

[注意]:

collections.deque比Python纯list循环 Relevant-Post 更快。

答案 7 :(得分:0)

这些都不适合我。我将第一个元素转换为系列(单个元素系列)的一部分,并将第二个元素转换为系列,并使用了附加函数。

/**
 * Converts ORM like objects from the request from arrays to objects.
 *
 * @param string $key
 *
 * @return AbstractEntity
 */
private function convertRequestToObj(string $key)
{
    $ar = filter_input($this->inputType, $key, \FILTER_DEFAULT, \FILTER_REQUIRE_ARRAY);
    $baseObj = new $this->objMapping[$key]();
    $this->mapArrayToObj($ar, $baseObj);

    return $baseObj;
}

private function mapArrayToObj(array $ar, AbstractEntity $baseObj)
{
    foreach ($ar as $column => $value) {
        $reflection = new \ReflectionClass($baseObj);
        $method1 = 'add' . ucfirst($column);
        $method2 = 'set' . ucfirst($column);
        $methods = $reflection->getMethods(\ReflectionMethod::IS_PUBLIC);

        if (is_array($value)) {
            $newObj = new $this->objMapping[$column]();
            $this->addObjectTo($methods, $method1, $method2, $baseObj, $newObj);
            $reflection = new \ReflectionClass($newObj);
            $methods = $reflection->getMethods(\ReflectionMethod::IS_PUBLIC);
            foreach ($value as $subCol => $subVal) {
                $method2 = 'set' . ucfirst($subCol);
                if (is_array($subVal)) {
                    if (is_numeric($subCol)) {
                        $this->mapArrayToObj($subVal, $newObj);
                    }
                } else {
                    $this->parseSimpleType($newObj, $column, $value, $methods, $method2);
                }
            }
        } else {
            $this->parseSimpleType($baseObj, $column, $value, $methods, $method2);
        }
    }
}

答案 8 :(得分:0)

list_1.insert(0,ur_data)

确保ur_data为字符串类型 因此,如果您有data= int(5)转换为ur_data = str(data)