Python ʻarr [0]: [0] `объяснение
Этот фрагмент кода является одним из сообщений в проблеме LeetCode, написанных fukuzawa_yumi
def splitArray(self, nums):
d,n={nums[0]:[0]},len(nums)
for i in range(1,n):
nums[i]+=nums[i-1]
if nums[i] not in d: d[nums[i]]=[i]
else: d[nums[i]].append(i)
for i in range(1,n-5):
for k in d.get(nums[-1]-nums[i-1],[]):
if i+3<k<n-1 and any(nums[i-1]+nums[j+1]==nums[k-1] for j in d.get(nums[i]+nums[i-1],[]) if i<j<k-2): return True
return False
В nums[0]:[0]
, d: d[nums[i]]=[i]
мне незнакомы, и я не могу найти объяснение в Интернете.
Пожалуйста, назовите меня в правильном направлении и приведите несколько примеров для потомков.
2 ответа
d,n={nums[0]:[0]},len(nums)
Что делает эта строка:
- связывать
d
к словарю формируется единый элемент с ключомnums[0]
(первый элемент в спискеnums
) и значение[0]
(список, содержащий 0) - связывать
n
до длины спискаnums
Можно объединить два присваивания в одной строке, как в Python. Python будет выполнять присвоение переменных в зависимости от порядка. Это то же самое, что и расширение кортежа.
d,n={nums[0]:[0]},len(nums)
Это несколько уродливый способ написать1:
d = {nums[0]: [0]}
n = len(nums)
Создает словарь d
с одним предметом. Ключ - это первый элемент вnums
и значение - один элемент list
содержащий 0
.
Позже, когда вы доберетесь до:
d[nums[i]] = [i]
Это операция "заменить или установить" в словаре. Код устанавливает элемент словаря с ключом =nums[i]
в список с одним элементом, значение которого i
.
+1 На мой субъективный взгляд:)