Разница в выражениях [:] и a в выражении - PullRequest
2 голосов
/ 27 июня 2019

Я знаю разницу в a[:] и a при назначении переменной, а также особый случай назначения среза.

Предположим,

a=[1,2,3,4,5]  

В чем разницамежду следующими двумя утверждениями?

b=a[:]+[6,7,8,9,10] #1   
b=a+[6,7,8,9,10] #2  

В обоих случаях оба значения a и b имеют в конце одинаковые значения.

Я ссылался на следующие ссылки -

Когда и зачем использовать [:] в python

Понимание обозначения слайса

Python, почему вы используете [:] over =

Они не упомянули свою разницу в выражении как таковом.

Ответы [ 3 ]

5 голосов
/ 27 июня 2019

a[:] захватывает полный фрагмент списка - в этом контексте он не имеет разницы в действии, так как вы назначаете новый список (хотя он и копирует список, поэтому он медленнее в масштабе).

# create the list.
>>> a = [1, 2, 3, 4, 5]
# see its address
>>> id(a)
4349194440
# see the (different) address of a copy
>>> id(a[:])
4350338120
# reassign the entire list using slice syntax
>>> a[:] = [5, 6, 7]
>>> a
[5, 6, 7]
# still the same first ID though
>>> id(a)
4349194440
>>>
0 голосов
/ 27 июня 2019
a=[1,2,3,4,5] 
b=a[:]+[6,7,8,9,10] #1  
b=a+[6,7,8,9,10] #2 

Case-1 a[:], означает, что вы разделяете последовательность, и последовательность может быть любой, например, строкой, списком и т. Д. В основном это читается как a[start:end:steps], где start end наши значения индексации И steps количество прыжков. Если мы не предоставляем никаких значений, то по умолчанию start = 0 AND end = последний элемент последовательности AND steps = 1. Таким образом, в вашем случае вы просто берете все элементы списка a.

Дело-2 a, это просто означает целое a

Вывод : - С помощью a[:] вы можете получить нужные элементы.

Примеры - >>

a = [1,2,3,4]
a[1:4]
>> [1,2,3]
a[::2]
>> [1,3]

Надеюсь, это поможет вам.

0 голосов
/ 27 июня 2019

В списках Python a[:] и a имеют только разницу в их идентификаторах, потому что a[:] делает точную копию a в другом месте адреса.

Также учитывает неизменяемое нарезание строк Pythona[:] и a не имеют никакой разницы. Оба указывают на одно и то же адресное местоположение.

...