2016-06-09 6 views
0

Я новичок в Python, и я пытаюсь понять некоторые основные вещи. У меня есть этот код:Заменить буквы в строке с помощью Python

def mix_up(a, b): 
    a,b=b[0:2]+a[2:], a[0:3]+b[3:] 
    print (a,b) 

mix_up("abcd","efgh") 

почему б не получить «новые» 3 буквы а (то есть, «efch»)? Есть ли элегантный из этого в одной строке, или мне нужно использовать другие переменные?

Спасибо!

+0

уступка, а также для кортежей заданий, происходит после того, как правая рука была * полностью * оценивается, то есть 'а [0: 3] 'оценивает немодифицированный' a'. Можете ли вы описать, чего вы хотите достичь? – dhke

+0

@BhargavRao Я бы посчитал это * достаточно близко *. Но здесь никаких побочных эффектов нет, просто старый справа налево. – dhke

+0

В чем проблема с этим: «a = b [0: 2] + a [2:] b = a [0: 3] + b [3:]"? – sumit

ответ

0

Причина, по которой ее не работает, потому что назначение (левая сторона =) происходит только после оценки всей правой стороны.

Так что ваш a и b все еще «старый» a и b в заявлении, а не новые.

Чтобы исправить это, просто разбить его на два заявления:

a = b[0:2]+a[2:] 
b = a[0:3]+b[3:] # now this is the "new" a 
Смежные вопросы