Załóżmy, że mam prostą listę Pythona takiego:Walcząc ze składnią slice dołączyć do listy element części listy
>>> l=['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
Załóżmy teraz chcę połączyć l[2:6]
do jednego elementu tak:
>>> l
['0', '1', '2345', '6', '7', '8', '9']
jestem w stanie to zrobić w krokach do nowej listy, jak to:
>>> l2=l[0:2]
>>> l2.append(''.join(l[2:6]))
>>> l2.extend(l[6:])
>>> l2
['0', '1', '2345', '6', '7', '8', '9']
T tutaj sposób (którego mi brakuje), aby zrobić to prostiej i na miejscu na oryginalnej liście l
?
Edit
Jak zwykle Sven Marnach miał doskonałą odpowiedź natychmiastowy:
l[2:6] = ["".join(l[2:6])]
próbowałem:
l[2:6] = "".join(l[2:6])
ale bez szelek, ciąg wytwarzany przez sprzężenie zostało następnie potraktowane jako iterowalne umieszczenie każdej postaci z powrotem na liście i cofnięcie łączenia!
Rozważmy:
>>> l=['abc','def','ghk','lmn','opq']
>>> l[1:3]=[''.join(l[1:3])]
>>> l
['abc', 'defghk', 'lmn', 'opq'] #correct
>>> l=['abc','def','ghk','lmn','opq']
>>> l[1:3]=''.join(l[1:3])
>>> l
['abc', 'd', 'e', 'f', 'g', 'h', 'k', 'lmn', 'opq'] #not correct
To szelki wokół złącza, którego mi brakowało !!! Dzięki! – dawg