for in+邏輯表達式 生成迭代對象,最后轉化為列表 ——注意list是生成器轉化為列表,但[生成器]得到的就是一個列表,其中包含一個生成器元素

(int(digit) ** 2 for digit in str(n))

這個不是 數組(list),而是一個 生成器表達式 (generator expression)

它的作用是:

  • str(n) 把數字 n 轉成字符串,例如 n = 82"82"

  • for digit in str(n) 遍歷字符串中的每個字符 → "8", "2"

  • int(digit) 把字符轉回數字 → 8, 2

  • ** 2 表示平方 → 64, 4

  • 所以,(int(digit) ** 2 for digit in str(n)) 生成的是一個 按需計算的序列(生成器),不會一次性把所有結果存儲下來。

但是在代碼里寫的是:

n = sum(int(digit) ** 2 for digit in str(n))

這里 sum(...)遍歷生成器,把里面的每一項加起來,得到一個整數。


🔎 舉例:
如果 n = 82

  • str(n)"82"

  • 遍歷 "8", "2"

  • 平方得到 64, 4

  • sum(...)64 + 4 = 68

所以,結果是 68


👉 如果你真的想看到“像數組一樣的結果”,可以寫成 列表推導式

[int(digit) ** 2 for digit in str(n)]

這就會直接生成一個列表,比如:

n = 82
print([int(digit) ** 2 for digit in str(n)])  
# 輸出: [64, 4]

要不要我幫你把這段快樂數代碼改寫成“中間過程都打印出來”的版本?這樣你能清楚看到每次 n 的分解結果和平方和的變化。

——【list(生成器)和[生成器]的區別】—

我們一步步分析你的例子:

squares = (x ** 2 for x in range(5))  # 這是一個生成器(generator)
M = [squares]                         # 用 [] 包裹

1?? squares = (x ** 2 for x in range(5))

  • 這里用 小括號 () 創建了一個 生成器(generator)。

  • 它本身 不是列表,而是可以按需生成元素的迭代器。

  • 例如:

print(squares)  # <generator object <genexpr> at 0x...>

2?? M = [squares]

  • 這里用 列表字面量 [] 包裹了 squares

  • M 是一個 列表,長度為 1,里面的唯一元素就是 squares 生成器對象。

print(M)        # [<generator object <genexpr> at 0x...>]
print(type(M))  # <class 'list'>
  • 注意:列表里面的元素仍然是生成器本身,不是生成器產生的數字。


3?? 如果用 list(squares)

squares = (x ** 2 for x in range(5))
M2 = list(squares)
print(M2)        # [0, 1, 4, 9, 16]
print(type(M2))  # <class 'list'>
  • list()遍歷生成器,把生成的每個值收集成一個列表

  • 結果是長度 5 的列表 [0,1,4,9,16],而不是長度 1 的列表。


? 總結:

寫法結果類型內容
[squares]list列表里只有生成器對象本身
list(squares)list列表里是生成器生成的所有值

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/94832.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94832.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94832.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

通信算法之321:verilog中generate if 用法-綜合掉無用分支

文章目錄 一.示例代碼 二.優缺分析 三. generate - case 一.示例代碼 提示:參考 // 根據添加/補償頻偏的標志,確定使用的頻偏wire signed [WIDTH-1 : 0] freq;generateif(FREQ_FLAG == 1b1) beg

Shell 入門

目錄 一、Shell 是什么 二、 .sh 腳本調用 .py 腳本 Python 核心邏輯腳本&#xff08;data_processor.py&#xff09; Shell 腳本&#xff08;pipeline.sh&#xff09; 三、常見命令 四、.sh腳本 1. 簡單例子 2. 進階例子 3. 猜數字游戲 一、Shell 是什么 Shell 的本…

UNet改進(36):融合FSATFusion的醫學圖像分割

1. 注意力機制的理論基礎 1.1 空間注意力機制 空間注意力機制模擬人類視覺系統,能夠關注圖像中的顯著區域。其核心思想是根據特征圖的空間位置生成權重圖,突出重要區域并抑制無關信息。常見的實現方式是通過沿通道維度的池化操作獲取空間統計信息,然后通過卷積層生成空間注…

docker安裝kafka、zookeeper詳細步驟

Kafka 簡介 Kafka 是一個分布式流處理平臺,由 LinkedIn 開發并開源,主要用于高吞吐量的實時數據管道和流處理。 核心特性 高吞吐量:支持每秒百萬級消息處理,適合大數據場景。 持久化存儲:消息可持久化到磁盤,并支持多副本備份。 分布式架構:支持水平擴展,通過分區(P…

Photoshop - Ps 編輯圖像

使用基本圖像編輯技術&#xff0c;讓圖像展現出最好的一面。1.修剪和拉直使用裁剪工具&#xff0c;可以修剪邊緣&#xff0c;更改圖像的形狀和大小&#xff0c;甚至可以對圖像進行拉直和彎曲的操作。2.改善亮度和色彩點擊菜單欄-編輯-調整-亮度/對比度&#xff0c;調整圖像的亮…

SpringBoot 配置文件在運維開發中的應用

在 SpringBoot 項目的運維開發工作里&#xff0c;配置文件相關知識是繞不開的重要內容。它關乎著項目在不同環境下的靈活部署、參數調整&#xff0c;直接影響著應用的穩定性與可維護性。接下來&#xff0c;我們就從臨時屬性、屬性加載優先順序、配置文件分類這幾個維度&#xf…

雷卯國產化之SE3401完全替代AOS的AO3401

上海雷卯PMOS型號SE3401 pin to pin替代AOS型號AO3401&#xff0c;已經有很多客戶選用 SE3401替代AO3401&#xff0c;客戶可以獲得更好的價格和更快的交期。特別是在一些受空間收下限的小電子設備很受青睞。參數對比如下&#xff1a;以下是SE3401&#xff08;P溝道MOSFET&#…

多語言與零樣本語音識別新突破:基于發音特征分類的方法

多語言與零樣本語音識別新突破:基于發音特征分類的方法 在語音識別領域,多語言和零樣本(zero-shot)語言的識別一直是一個極具挑戰性的課題。近期,京都大學的研究團隊提出了一種全新的方法,通過引入國際音標(IPA)和發音特征(Articulatory Features)來提升語音識別系統…

1.8 Memory

1.Memory簡介 2.Memory中各參數的功能和作用1.Memory簡介 1).Memory(內存)模塊它是unity中監視內存使用情況的關鍵工具, 它能幫助我們識別哪些資源在占有大量內存,是否存在內存泄露或垃圾回收頻繁等問題2).游戲中如果出現以下問題, 可以重點觀察memorya.游戲卡頓, 掉幀- 表現: …

國家統計局數據爬取——機器學習

這個代碼是一個用于爬取國家統計局網站數據的Python腳本。下面我將詳細解釋代碼的各個部分及其設計思路。 代碼結構概述 import requests # 發送HTTP請求 from bs4 import BeautifulSoup # 解析HTML import pandas as pd # 數據處理和存儲 import time # 時間控制 import…

內存管理(智能指針,內存對齊,野指針,懸空指針)

&#x1f4cc; 1. 野指針 (Wild Pointer)什么是野指針&#xff1f;野指針指的是未初始化的指針變量。它指向的內存地址是隨機的、未知的。產生原因cppint* ptr; // 野指針&#xff01;未初始化&#xff0c;指向隨機地址 *ptr 10; // 危險&#xff01;可能破壞系統內存char* st…

Spring代理的特點

一.Spring代理的特點1.依賴注入和初始化影響的是原始的對象。2.代理和目標是兩個對象&#xff0c;二者成員變量不共用數據。二.測試首先準備以下幾個類。Bean1package com.example.springdemo.demos.a13;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.…

嵌入式學習日記(35)TCP并發服務器構建

單循環服務器&#xff1a;服務端同一時刻只能處理一個客戶端的任務并發服務器&#xff1a;服務端同一時刻可以處理多個客戶端的任務TCP并發服務器構建&#xff1a;TCP&#xff1a; 1. 建立連接&#xff0c;一對一TCP服務端并發模型&#xff1a;1. 多進程進程資源開銷大&#x…

【Flask】測試平臺開發實戰-第二篇

概述&#xff1a;在上一篇我們已經將后端初始化服務后前端的vue框架初始化已經搭建完整&#xff0c;并且可以運行看到界面&#xff0c;服務正常&#xff0c;當然我們看到的前端數據都是mock下的假數據&#xff0c;并不是真實的&#xff0c;這篇我們來開發實現第一個功能&#x…

聊一聊 .NET 的 AssemblyLoadContext 可插拔程序集

一&#xff1a;背景 1. 講故事 最近在分析一個崩潰dump時&#xff0c;發現禍首和AssemblyLoadContext有關&#xff0c;說實話這東西我也比較陌生&#xff0c;后來查了下大模型&#xff0c;它主要奔著替代 .NetFrameWork 時代的 AppDomain 的&#xff0c;都是用來做晚期加卸載&a…

Java中使用Spring Boot+Ollama實現本地AI的MCP接入

目錄結構完善spring bootpom.xml添加依賴application.ymlMCP 工具配置 mcp-servers.json配置類編寫API在我的上一篇文章搭建好本地的聊天機器人后&#xff0c;準備接入MCP進一步增強AI的能力&#xff0c;以實現類似手機AI的功能 參考的是第二篇文章鏈接其內容比較精煉&#x…

C#正則表達式與用法

&#x1f31f; C# 常用正則表達式與用法C# 使用正則需要引用命名空間&#xff1a;using System.Text.RegularExpressions; 常用方法&#xff1a;Regex.IsMatch(input, pattern) → 返回 bool&#xff0c;用于驗證Regex.Match(input, pattern) → 返回 Match 對象&#xff0c;可…

從0開始學習Java+AI知識點總結-27.web實戰(Maven高級)

一、分模塊設計與開發&#xff1a;讓項目結構更清晰1.1 為什么需要分模塊&#xff1f;單模塊開發的痛點在小型項目中&#xff0c;單模塊&#xff08;所有代碼放在一個工程&#xff09;或許能滿足需求&#xff0c;但項目規模擴大后會出現兩大核心問題&#xff1a;維護成本高&…

Ferris Wheel (貪心 | 雙指針)

題目&#xff1a;思路&#xff1a;本題注意題目的條件即可&#xff0c;題意說一個摩天輪可以坐一個人或者兩個人&#xff0c;那么顯然我們就可以貪心一下具體的&#xff0c;我們可以讓最小的去匹配最大的&#xff0c;如果此時大于 x&#xff0c;那么顯然我們根本無法使得 最大的…

課程視頻怎么加密?在線教育機構常用的6個課程加密方法

知識付費時代&#xff0c;課程視頻是教育機構的核心資產。但是不難發現&#xff0c;課程視頻的安全卻得不到保障。各大購物平臺搜索課程名稱&#xff0c;便出現了許多盜版課程。如何有效防止課程被翻錄和二次傳播&#xff0c;成為急需解決的關鍵問題。今天這期分享點干貨&#…