所以我和我的伙伴正在互相帮助学习编程,我们一直在为自己提出挑战。他提出了一个有20个开关的地方。我们需要编写一个程序,首先打到每个其他开关,然后是每三个开关,然后是每个第四个开关,并让它输出打开和关闭。
我的头脑中有关于如何继续的基本想法但是,我不完全确定如何从列表中挑选出所有其他/第3 /第4个值。我想,一旦我弄清楚其中的一小部分应该很容易。
以下是清单:
start_list = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
我知道我可以通过以下方式选择每个元素:
start_list[2]
但是,如何选择所有其他元素,然后将其递增1?
答案 0 :(得分:2)
使用Python's List Slicing Notation:
start_list[::2]
切片的格式为[start:stop:step]
。 [::2]
意味着,从开始到结束,获得每一个元素。这将返回每隔一个元素。
我相信你可以弄清楚如何获得每一个第三和第四个值:p。
要更改每个值,您可以执行以下操作:
>>> start_list[::2] = len(start_list[::2])*[1]
>>> start_list
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
答案 1 :(得分:1)
每隔一个开关:
mylist[::2]
每三分之一:
mylist[::3]
您也可以分配给它:
mylist=[1,2,3,4]
mylist[::2]=[7,8]
答案 2 :(得分:1)
>>> start_list = [0] * 20
>>> for i in range(2, len(start_list)):
... start_list[::i] = [1-x for x in start_list[::i]]
...
>>> start_list
[0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1]