簡體   English   中英

Python 3:帶有字典的for循環語法

[英]Python 3: for loop syntax with dictionary

以下代碼段有效:

param = {}

for nround_counter in [1,2,3]:
    { 
        print(nround_counter)
        #param = {'objective' : 'multi:softmax'}

    } 

但是以下不是:

param = {}

for nround_counter in [1,2,3]:
    { 
        print(nround_counter)
        param = {'objective' : 'multi:softmax'}

    } 

給出的錯誤是無效的語法。 我是Python的新手,請尋求調試上述內容的幫助。

謝謝。

諸如循環,函數,類之類的代碼體未在Python中用大括號括起來。 縮進是決定代碼結構的因素。

for nround_counter in [1, 2, 3]:
    print(nround_counter)
    param = {'object' : 'multi:softmax'}

您在這里混淆了許多不同的問題。

這是您的第一個示例,使用更常規地用於Python的空白呈現:

#!python3
param = {}

for nround_counter in [1,2,3]:
    { print(nround_counter) }

請注意,這是對一系列語句的迭代,該語句(無用且令人困惑)被編碼為集合文字構造函數表達式,並因其副作用而被調用(調用print函數)。 它不會修改任何狀態,但會在整個循環的每次迭代中將其評估為一組,其中將None單例作為唯一元素。

這不是特殊的語法。 這只是Python的設置文字構造語法的一種難以理解的用法。

還完全不清楚您要完成什么。 遍歷一個循環不斷將param連續綁定到相同文字字典內容的列表是沒有意義的。

也許您想建立某種桌子?

param = dict()
for n in range(1,4):
    print(n)
    param['objective%s'%n] = 'multi:softmax'

... 或類似的東西。 注意,我使用dict()而不是文字{}初始化param ,因為我認為它更簡潔,更清晰(如果稍微冗長一些)。 同樣,我使用的是range(1,4)而不是您的文字列表,這再次是因為它更干凈。 我在此循環主體中所做的事情很愚蠢,但這只是您可以做的一個例子。

請注意,每次通過循環時,我都會生成一個唯一鍵(一個常量字符串文字,其中包含迭代器變量的字符串表示形式的內插值)。 人們通常希望這些值也可以以某種方式動態地計算或推導。 但是我不怎么想,因為沒有想到明確的教學示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM