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 На мой субъективный взгляд:)

Другие вопросы по тегам