2

私は持ってList = [0, 1, 2, 3]おり、それらすべてに 5: などの番号を割り当てたいと考えていますList = [5, 5, 5, 5]。私はList = [5] * 4簡単にできることを知っています。しかし、最後の 3 つの要素に 6 を割り当てることもできるようにしたいと考えています。

List = [5, 5, 5, 5]

YourAnswer(List, 6, 1, 3)

>> [5, 6, 6, 6]

YourAnswer関数です。

似たようなものは何でも役に立ちます。for ループを避けることを好みます。しかし、既知の可能性がない場合は、教えてください。

4

3 に答える 3

6

実際にスライス割り当てメカニズムを使用して、リストの一部に割り当てることができます。

>>> some_list = [0, 1, 2, 3]
>>> some_list[:1] = [5]*1
>>> some_list[1:] = [6]*3
>>> some_list
[5, 6, 6, 6]

これは、同じリストを更新する場合に便利ですが、新しいリストを作成する場合は、連結によって基準に基づいて新しいリストを作成するだけです。

>>> [5]*1 + [6]*3
[5, 6, 6, 6]

関数にラップできます

>>> def YourAnswer(lst, repl, index, size):
    lst[index:index + size] = [repl] * size


>>> some_list = [0, 1, 2, 3]
>>> YourAnswer(some_list, 6, 1, 3)
>>> some_list
[0, 6, 6, 6]
于 2013-01-04T04:17:22.697 に答える
2
In [138]: def func(lis,x,y,z):
   .....:     return lis[:y]+[x]*z
   .....: 

In [139]: lis=[5,5,5,5]

In [140]: func(lis,6,1,3)
Out[140]: [5, 6, 6, 6]
于 2013-01-04T04:20:31.270 に答える
0

+ を使用して実装できます

def createList(val1, n1, val2, n2):
    return [val1] * n1 + [val2]*n2
于 2013-01-04T04:28:33.063 に答える