Начиная с Python3 вам больше не нужно открывать devnull и вызывать subprocess.DEVNULL .
Ваш код будет обновлен как таковой:
import subprocess
text = 'Hello World.'
print text
subprocess.call(['espeak', text], stderr=subprocess.DEVNULL)
Проблема в том, что вы просто назначаете новое имя переменной в свой список new
, когда делаете old = new
. Поэтому любые изменения, которые вы сейчас делаете в new
, также будут отражены в old
, потому что вы просто создали новый указатель на ту же ячейку памяти в списке new
. Вы должны создать копию списка, чтобы не изменять исходный список. Один из способов сделать это - old = new.copy()
def solution(A , K):
old = A
new = [0]*len(A)
for i in range(K):
new[0]=old[-1]
new[1:] = old[:-1]
old = new.copy() # This was the problematic line
return new
solution([1,2,3,4,5], 2)
# [4, 5, 1, 2, 3]
solution([1,2,3,4,5], 3)
# [3, 4, 5, 1, 2]