第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

range() 中的計(jì)數(shù)器未被識(shí)別為整數(shù)

range() 中的計(jì)數(shù)器未被識(shí)別為整數(shù)

慕田峪9158850 2021-12-17 10:09:24
我正在嘗試使用嵌套的 for 循環(huán)逐步瀏覽對(duì)每個(gè)列表的每個(gè)元素進(jìn)行操作的列表列表。我收到來(lái)自 PyCharm 的警告,即第二個(gè) for 循環(huán)中的計(jì)數(shù)器類型不一定是整數(shù),盡管它是從范圍值派生的。代碼正確執(zhí)行,為什么會(huì)出現(xiàn)警告?def get_vote_fraction(cl_count, ag_vector):    v_f_vector = [[0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0, 0]]    for b in range(0, len(v_f_vector)):        for c in range(0, len(v_f_vector[b])):            v_f_vector[b][c] = f"{(ag_vector[b][c] / cl_count): .2F}"    return v_f_vectoraggregated_vector = [[0, 8, 0, 6], [0, 1, 0, 0, 0, 0, 9, 0], [0, 0, 10, 0], [0, 10, 0, 0, 0]]class_count = 10vote_fraction = get_vote_fraction(class_count, aggregated_vector)print(vote_fraction)正如預(yù)期的那樣,輸出是 [[' 0.00', ' 0.80', ' 0.00', ' 0.60'], [' 0.00', ' 0.10', ' 0.00', ' 0.00', ' 0.00', ' 0.00', '0.00' 0.90'、'0.00']、['0.00'、'0.00'、'1.00'、'0.00']、['0.00'、'1.00'、'0.00'、'0.00'、']0.00我收到一條警告,即 v_f_vector[b][c] 中的 c 可能是意外類型 (int, str),這表示 c 沒(méi)有充分定義為整數(shù)。我猶豫要不要向 PyCharm 提出問(wèn)題,因?yàn)槲铱赡苓z漏了一些簡(jiǎn)單的東西。有人看到我缺少什么嗎?
查看完整描述

3 回答

?
江戶川亂折騰

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊

關(guān)于PyCharm警告(問(wèn)題是關(guān)于的)

雖然2指數(shù)(C ^)被高亮顯示,讓用戶覺(jué)得是問(wèn)題,它不是有關(guān),在所有

通常,列表是同類容器,這意味著它們包含相同類型的元素。
PyCharm評(píng)價(jià)v_f_vector的列表的列表INT小號(hào)(并因此v_f_vector[b][c]作為INT)。嘗試為其分配一個(gè)字符串,會(huì)破壞列表的同質(zhì)性,因此會(huì)發(fā)出警告。
嘗試為其分配虛擬值(例如0.01f()[], ...),警告文本將更改,如下圖所示:

http://img1.sycdn.imooc.com//61bbf1700001124814920552.jpg

作為一種快速(和骯臟)的解決方法,如果列表將包含字符串,您可以執(zhí)行以下操作:


v_f_vector = [["", "", "", ""], ["", "", "", "", "", "", "", ""], ["", "", "", ""], ["", "", "", "", ""]]

關(guān)于導(dǎo)致此問(wèn)題的代碼


聲明具有特定內(nèi)容的列表,然后返回并更改該內(nèi)容(基于另一個(gè)(類似結(jié)構(gòu)的)列表)是違反直覺(jué)的。


你(完)目標(biāo),可以實(shí)現(xiàn)一個(gè)代碼行(最Python的IC形式),由的列表解析(檢查[Python的3.Docs]:列表綜合)。由于您的列表嵌套級(jí)別為 2,因此理解將是:


>>> aggregated_vector = [[0, 8, 0, 6], [0, 1, 0, 0, 0, 0, 9, 0], [0, 0, 10, 0], [0, 10, 0, 0, 0]]

>>> class_count = 10

>>>

>>> vote_fraction = [[f"{(item1 / class_count): .2F}" for item1 in item0] for item0 in aggregated_vector]

>>> print(vote_fraction)

[[' 0.00', ' 0.80', ' 0.00', ' 0.60'], [' 0.00', ' 0.10', ' 0.00', ' 0.00', ' 0.00', ' 0.00', ' 0.90', ' 0.00'], [' 0.00', ' 0.00', ' 1.00', ' 0.00'], [' 0.00', ' 1.00', ' 0.00', ' 0.00', ' 0.00']]

>>>

>>> # Or, if you REALLY need to have a function

...

>>> def get_vote_fraction(cl_count, ag_vector):

...     return [[f"{(item1 / cl_count): .2F}" for item1 in item0] for item0 in ag_vector]

...

>>>

>>> print(get_vote_fraction(class_count, aggregated_vector))

[[' 0.00', ' 0.80', ' 0.00', ' 0.60'], [' 0.00', ' 0.10', ' 0.00', ' 0.00', ' 0.00', ' 0.00', ' 0.90', ' 0.00'], [' 0.00', ' 0.00', ' 1.00', ' 0.00'], [' 0.00', ' 1.00', ' 0.00', ' 0.00', ' 0.00']]

注意:您的代碼也可以進(jìn)行調(diào)整,但我建議使用推薦的變體。


查看完整回答
反對(duì) 回復(fù) 2021-12-17
?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊

我認(rèn)為警告來(lái)自您用字符串替換整數(shù)值的事實(shí)。當(dāng)我嘗試v_f_vector使用'0'而不是實(shí)例化時(shí)0,PyCharm 沒(méi)有顯示任何警告:


v_f_vector = [['0', '0', '0', '0'], ['0', '0', '0', '0', '0', '0', '0', '0'], ['0', '0', '0', '0'], ['0', '0', '0', '0', '0']]

但是,這可能不是解決問(wèn)題的最佳方法。我建議對(duì)您的代碼進(jìn)行這樣的重構(gòu):


def get_vote_fraction(cl_count, ag_vector):

    v_f_vector = []

    for b in range(0, len(ag_vector)):

        v_f_vector.append([])

        for c in range(0, len(ag_vector[b])):

            v_f_vector[b].append(f"{(ag_vector[b][c] / cl_count): .2F}")

    return v_f_vector



aggregated_vector = [[0, 8, 0, 6], [0, 1, 0, 0, 0, 0, 9, 0], [0, 0, 10, 0], [0, 10, 0, 0, 0]]

class_count = 10

vote_fraction = get_vote_fraction(class_count, aggregated_vector)

print(vote_fraction)

它將允許您在aggregated_vector不將這些更改反映到實(shí)例化的情況下進(jìn)行更改v_f_vector。


查看完整回答
反對(duì) 回復(fù) 2021-12-17
?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊

你應(yīng)該使用 enumerate()


例子:


iterable = [1,2,3,4]

for i, v in enumerate(iterable):

    print(i,v)

預(yù)期輸出


0 1

1 2

2 3

3 4

代替


for x in range(0, len(iterable)):

    print(x, iterable[x])

抱歉,這并不是您問(wèn)題的真正答案,但這樣更易于閱讀,而且,枚舉將始終為您提供索引和值,或者如果它是字典,則是鍵和值。


可能還值得注意的是,將列表嵌套在字典中,然后為每個(gè)列表提供一個(gè)特定的鍵,以便您可以訪問(wèn)它們,這使人類可讀性更高。


只是深思熟慮


為了更清晰,假設(shè)您有 4 個(gè)向量,向量 a、b、x 和 y。您可以將它們各自的列表放在自己的字典鍵中,然后使用它們的鍵訪問(wèn)它們。


查看完整回答
反對(duì) 回復(fù) 2021-12-17
  • 3 回答
  • 0 關(guān)注
  • 200 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)