Python `arr [0]: [0]` объяснение - PullRequest
0 голосов
/ 11 января 2020

Этот фрагмент кода является одним из сообщений о проблеме 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 ]

1 голос
/ 11 января 2020
d,n={nums[0]:[0]},len(nums)

Что делает эта строка:

  • привязка d к словарю, сформированному из одного элемента с ключом nums[0] (первый элемент в списке nums) и значением [0] (список, содержащий 0)
  • привязать n к длине списка nums

Можно объединить два назначения в одну строку, как показано в Python. Python выполнит присвоение переменных в зависимости от порядка. Это то же самое, что и расширение кортежа.

1 голос
/ 11 января 2020
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 По моему субъективному мнению:)

...