Devops系列---python基礎篇二

1、列表

1.1 概念

格式: 名稱 = [ “元素1”,“元素2”,…]

#定義一個列表
computer = ["主機","鍵盤","顯示器","鼠標"]
類型方法用途
index(“元素”)查看元素索引位置
count(“元素”)統計元素出現的次數
reverse()倒序排序元素
sort進行排序
append(“元素”)追加一個元素
insert(index,“元素”)在指定索引位置插入一個元素
computer[index] = “元素”修改指定索引的值
刪除remove(“元素”)刪除指定的元素
pop(index=-1)通過索引刪除元素并返回索引

1.2 習題

1.2.1 定義一個列表并打印出列表里的元素
#1、創建一個列表,命名為names,往里面添加陳賢賢、大財神、飛魚、WuYing、阿陽和Black元素
names = ["陳賢賢","大財神","飛魚","WuYing","阿陽","Black"]
print(names)
1.2.2 引用列表的長度拼接字符串
names = ["陳賢賢","大財神","飛魚","WuYing","阿陽","Black"]
print('我建立的學習群有',len(names),'個學生在微信群里面')      #6的前后有空格
print('我建立的學習群有'+str(len(names))+'個學生在微信群里面')  #6的前后沒有空格
1.2.3 引用列表里面的變量拼接字符串
names = ["陳賢賢","大財神","飛魚","WuYing","阿陽","Black"]
print("我們班的班花叫:",names[2])
print("我們班的班花叫:"+ str(names[2]))

注意:拼接字符串引用列表里面的元素時,默認元素前時有空格的,如果不需要空格使用+str轉換,此時就不需要使用逗號隔開

1.2.3 往列表中添加兩個元素
names = ["陳賢賢","大財神","飛魚","WuYing","阿陽","Black"]
names.insert(2,["老男孩,老女孩"])
print(names)
1.2.4改變列表中的某一個元素名稱
names = ["陳賢賢","大財神","飛魚","WuYing","阿陽","Black"]
names[names.index("WuYing")] = "吳瑩"
print(names)#方法二:
names = ["陳賢賢","大財神","飛魚","WuYing","阿陽","Black"]
names[3] = "吳瑩"
print(names)
1.2.5返回列表中元素的位置(索引值)
names = ["陳賢賢","大財神","飛魚","WuYing","阿陽","Black"]
print(names.index("飛魚"))
1.2.6 合并列表(使用extend)
names = ["陳賢賢","大財神","飛魚","WuYing","阿陽","Black"]
numbers = [1,2,3,4,5,6,2,5,4]
names.extend(numbers)
print(names)
1.2.7 取出列表中指定的元素
1、取出names列表中索引4-7的元素
names = ["陳賢賢","大財神","飛魚","WuYing","阿陽","Black"]
numbers = [1,2,3,4,5,6,2,5,4]
names.extend(numbers)
print(names[4:8])  #包含第七個元素2、取出names列表中索引2-10的元素,步長為2
names = ["陳賢賢","大財神","飛魚","WuYing","阿陽","Black"]
numbers = [1,2,3,4,5,6,2,5,4]
names.extend(numbers)
print(names[2:11:2])
1.2.8 打印特定索引值和元素
1、循環names列表,打印每個元素的索引值和元素。
names = ["陳賢賢","大財神","飛魚","WuYing","阿陽","Black"]
for i in names:print(names.index(i),i)2enumerate()枚舉
names = ["陳賢賢","大財神","飛魚","WuYing","阿陽","Black"]
for index,i in enumerate(names):print(index,i)3、names列表里有32,請返回第二個2的索引值,不要人肉,要動態找
names = ["陳賢賢", "大財神", "飛魚", "WuYing", "阿陽", "Black", 1, 2, 3, 4, 2, 5, 6, 2]
print(names.index(2, names.index(2)+1))
1.2.9 商品列表
products = [["iphone", 6888], ["MacPro", 14800], ["小米6", 2499], ["Coffee", 31], ["Book", 60], ["Nike", 699]]
print("------ 商品列表 ------ ")
for index,i in enumerate(products):print("%s %s %s" % (index, i[0],i[1]))

在這里插入圖片描述

1.2.10 根據products列表寫一個循環,不斷詢問用戶想買什么,用戶選擇一個商品編號,就把對應的商品添加到購物車里,最終用戶輸入q退出時,打印購買的商品列表
products = [["iphone", 6888], ["MacPro", 14800], ["小米6", 2499], ["Coffee", 31], ["Book", 60], ["Nike", 699]]
shop_car = []  #用戶購物車
shop_cost = 0  #用戶花費金額
exit_log = False #標志位while not exit_log:print("------ 商品列表 ------")for index,i in enumerate(products):print("%s %s %s" %(index,i[0],i[1]))use_choice = input("\n輸入你想購買的產品序列號(按q退出):")if use_choice.isdigit():  #判斷用戶輸入的是否是數字use_choice = int(use_choice)if use_choice >=0 and use_choice < len(products):shop_car.append(products[use_choice])  #加入購物車shop_cost += products[use_choice][1]    #計算費用print("\n %s 已經加入你的購物車\n"%products[use_choice])else:print("抱歉,此商品不存在\n")elif use_choice == "q":# 用戶選擇退出if len(shop_car) > 0:# 判斷用戶是否購買了商品print("\n------ 你的購物車 ------")for index, i in enumerate(shop_car):# index和i為臨時變量,與前一個for循環里index和i作用的列表不同,故可重用print("%s  %s" % (i[0], i[1]))print("\n你此次購物的花費合計是:%s元\n" % shop_cost)exit_log = True # 退出購物else:exit_log = True # 未購買商品,不打印購物車商品,直接退出else:# 輸入不合法exit_log = True
1.2.11 刪除列表元素
names = ["陳賢賢", "大財神", "飛魚", "WuYing", "阿陽", "Black"]
names.remove('飛魚')
print(names)

2、元組

2.1 概念

元組:與列表相似,也是一個序列數據結構。主要區別在于元組中的元素不能修改

格式:名稱 = (“a”,“b”,“c”,…)

#定義一個元組
computer = ("主機","顯示器","鼠標","鍵盤")
print(computer)

2.2 綜合案例

students = (("alice",85),("bob",99),("david",78)
)#1. 訪問元組中的數據
print("學生名單以及成績如下:")
for student_sheet in students:name,sore = student_sheetprint(f"{name}的成績是{sore}")# 2. 計算總成績和平均成績
total_sore = 0 #初始化總成績
for student_sheet in students:total_sore += int(student_sheet[1])average_sore = int(total_sore / len(students))
print("班級總成績:"+ str(total_sore))
print("班級平均成績:",average_sore)#創建新的元組,代表新的學生
new_student = ("Frank", 90)
students = students + (new_student,)
print(students)

注意:元組里面元素的內容是不可逆的,無法修改的

3、集合

3.1概念

集合是一個無序、不重復的元素序列,主要用于元素去重和關系測試

關系測試支持:

  • 聯合
  • 交集
  • 差集
  • 對稱差集

格式: 名稱 = {“a”,“b”,…}或者 名稱 = set([“a”,“b”,“…”])

#定義一個集合
computer = ["主機","顯示器","鼠標","鍵盤","顯示器","鼠標"]
com = set(computer)
print(com)

3.2案例

# 創建一個字典來管理學生選課信息
students_courses = {"alice": {"math", "english", "science"},"bob": {"math", "history"},"charlie": {"science", "art"},"david": {"math", "science", "art"},
}# 函數:添加課程
def add_course(student, course):if student in students_courses:students_courses[student].add(course)print(f"{student} 已添加課程: {course}")else:print(f"學生 {student} 不存在。")# 函數:刪除課程
def remove_course(student, course):if student in students_courses:if course in students_courses[student]:students_courses[student].remove(course)print(f"{student} 已刪除課程: {course}")else:print(f"{student} 沒有選修課程: {course}")else:print(f"學生 {student} 不存在。")# 函數:查看某位學生已選課程
def view_courses(student):if student in students_courses:print(f"{student} 已選課程: {students_courses[student]}")else:print(f"學生 {student} 不存在。")# 函數:計算選修同一課程的學生
def students_in_course(course):enrolled_students = {student for student, courses in students_courses.items() if course in courses}return enrolled_students# 函數:計算選修所有課程的學生
def all_students_in_courses():all_courses = set()for courses in students_courses.values():all_courses.update(courses)return all_courses# 測試添加課程
add_course("alice", "art")
add_course("bob", "science")# 測試刪除課程
remove_course("charlie", "art")
remove_course("david", "math")# 查看學生已選課程
view_courses("alice")
view_courses("bob")# 計算選修同一課程的學生
course_to_check = "math"
enrolled_students = students_in_course(course_to_check)
print(f"選修 {course_to_check} 的學生有: {enrolled_students}")# 計算所有選修的課程
all_courses = all_students_in_courses()
print(f"所有選修的課程有: {all_courses}")

4、字典

4.1概念

字典:是一個具有映射關系的鍵值對的數據結構。用于存儲有一定關系的元素

格式: d = {‘key1’:value1,“key2”:value2,…}

注意:字典通過key來訪問value,因此字典中的key不允許重復

#定義字典
computer = {"主機":5000,"鼠標":1000}
類型方法用途
computer[“key”]獲取字典key的值
computer.get(“key”,None)獲取字典keyd的值,如果不存在返回None
keys()獲取所有鍵
values()獲取所有鍵的值
items()獲取所有鍵值
computer[“key”] = value添加鍵值,如果鍵存在則覆蓋
update(“key”)添加新字典
setdefault(“key”,default=None)如果鍵不存在,添加鍵并將值設置默認值,如果鍵存在返回值
pop(“key”)刪除指定鍵
computer.popitem()刪除最后一對鍵值并返回

4.2 綜合案例

# 創建一個學生成績字典
students_scores = {"alice": {"math": 85, "english": 78, "science": 92},"bob": {"math": 90, "english": 88, "science": 95},"charlie": {"math": 70, "english": 80, "science": 85}
}# 函數:添加新學生的成績
def add_student(name, scores):if name in students_scores:print(f"學生 {name} 已存在,更新其成績。")students_scores[name] = scores# 函數:更新學生的某一科目成績
def update_score(name, subject, score):if name in students_scores and subject in students_scores[name]:students_scores[name][subject] = scoreprint(f"{name}{subject} 成績已更新為 {score}。")else:print(f"學生 {name} 或科目 {subject} 不存在。")# 函數:刪除學生
def delete_student(name):if name in students_scores:del students_scores[name]print(f"學生 {name} 已被刪除。")else:print(f"學生 {name} 不存在。")# 函數:打印所有學生及其成績
def print_all_scores():for student, scores in students_scores.items():print(f"{student} 的成績:")for subject, score in scores.items():print(f"  {subject}: {score}")print()# 函數:計算某一學生的平均成績
def calculate_average(name):if name in students_scores:scores = students_scores[name].values()average = sum(scores) / len(scores)print(f"{name} 的平均成績是:{average:.2f}")else:print(f"學生 {name} 不存在。")# 添加新學生
add_student("david", {"math": 88, "english": 76, "science": 90})# 更新成績
update_score("alice", "math", 90)# 刪除學生
delete_student("charlie")# 打印所有學生成績
print_all_scores()# 計算某一學生的平均成績
calculate_average("bob")
calculate_average("david")

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

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

相關文章

LeetCode - 234. 回文鏈表

目錄 題目 快慢雙指針步驟 讀者可能的錯誤寫法 正確的寫法 題目 234. 回文鏈表 - 力扣&#xff08;LeetCode&#xff09; 快慢雙指針步驟 找到鏈表的中點&#xff08;find_mid函數&#xff09;&#xff1a; 使用快慢指針&#xff0c;慢指針每次走一步&#xff0c;快指針…

UniApp 全生命周期鉤子詳解

&#x1f449; 整理不易&#xff0c;如果本文對你有幫助&#xff0c;歡迎點個【贊 &#x1f44d;】【收藏 ?】【關注 &#x1f9e1;】 后續我們還將繼續分享實用的 UniApp 教程&#xff0c;比如&#xff1a; 文件上傳全局請求封裝狀態管理動態路由等… &#x1f4ee; 有任何…

探索NautilusTrader:下一代開源算法交易平臺的革命性突破

在金融科技的浪潮中,量化交易領域正經歷一場由開源技術驅動的變革。NautilusTrader(https://github.com/nautechsystems/nautilus_trader)作為一款高性能、生產級的算法交易平臺,正以其創新的設計理念和強大的技術架構重塑開發者的策略研發流程。 一、核心定位:打破回測與…

QT開發技術【ffmpeg + QAudioOutput】音樂播放器

一、 介紹 使用ffmpeg 4.2.2 在數字化浪潮席卷全球的當下&#xff0c;音視頻內容猶如璀璨繁星&#xff0c;點亮了人們的生活與工作。從短視頻平臺上令人捧腹的搞笑視頻&#xff0c;到在線課堂中知識淵博的專家授課&#xff0c;再到影視平臺上扣人心弦的高清大片&#xff0c;音…

[論文閱讀] (38)基于大模型的威脅情報分析與知識圖譜構建論文總結(讀書筆記)

《娜璋帶你讀論文》系列主要是督促自己閱讀優秀論文及聽取學術講座&#xff0c;并分享給大家&#xff0c;希望您喜歡。由于作者的英文水平和學術能力不高&#xff0c;需要不斷提升&#xff0c;所以還請大家批評指正&#xff0c;非常歡迎大家給我留言評論&#xff0c;學術路上期…

python批量解析提取word內容到excel

# 基于Python實現Word文檔內容批量提取與Excel自動化存儲 ## 引言 在日常辦公場景中&#xff0c;常需要從大量Word文檔中提取結構化數據并整理到Excel表格中。傳統手動操作效率低下&#xff0c;本文介紹如何通過Python實現自動化批處理&#xff0c;使用python-docx和openpyxl…

win32相關(遠程線程和遠程線程注入)

遠程線程和遠程線程注入 CreateRemoteThread函數 作用&#xff1a;創建在另一個進程的虛擬地址空間中運行的線程 HANDLE CreateRemoteThread([in] HANDLE hProcess, // 需要在哪個進程中創建線程[in] LPSECURITY_ATTRIBUTES lpThreadAttributes, // 安全…

Flyway

Flyway 是一個強大的數據庫版本控制和遷移工具&#xff0c;主要用于管理數據庫結構的變更和演進。 核心作用 1. 數據庫版本控制 追蹤數據庫變更&#xff1a;記錄每次數據庫結構的修改版本管理&#xff1a;為每個變更分配版本號變更歷史&#xff1a;完整記錄數據庫演進過程 …

【深尚想】OPA855QDSGRQ1運算放大器IC德州儀器TI汽車級高速8GHz增益帶寬的全面解析

1. 元器件定義與核心特性 OPA855QDSGRQ1 是德州儀器&#xff08;TI&#xff09;推出的一款 汽車級高速運算放大器&#xff0c;專為寬帶跨阻放大&#xff08;TIA&#xff09;和電壓放大應用優化。核心特性包括&#xff1a; 超高速性能&#xff1a;增益帶寬積&#xff08;GBWP&a…

機器學習實驗八--基于pca的人臉識別

基于pca的人臉識別 引言&#xff1a;pca1.pca是什么2.PCA算法的基本步驟 實例&#xff1a;人臉識別1.實驗目的2.實現步驟3.代碼實現4.實驗結果5.實驗總結 引言&#xff1a;pca 1.pca是什么 pca是一種統計方法&#xff0c;它可以通過正交變換將一組可能相關的變量轉換成一組線…

【LLIE專題】NTIRE 2025 低照度圖像增強第二名方案

Towards Scale-Aware Low-Light Enhancement via Structure-Guided Transformer Design&#xff08;2025&#xff0c;NTIRE&#xff09; 專題介紹一、研究背景二、SG-LLIE方法1.和Retinexformer方案對比2.總體方案及創新點3.詳細方案3.1 結構先驗提取3.2 網絡結構3.3 損失函數 …

泊松融合的介紹和OpenCV教程

泊松融合 Poisson Blending 簡介 核心思想 泊松融合的目標是在保留剪切圖像的梯度(紋理)信息的同時,使融合結果在邊界區域平滑過渡到目標圖像中。換句話說,它在融合區域中重建一個圖像,使其梯度盡可能接近源圖像的梯度,并且邊界貼合目標圖像。 數學描述 泊松融合將問題…

Unity協程Coroutine與UniTask對比

原理對比 CoroutineUniTask本質IEnumerator 的協作調度器async/await 狀態機&#xff08;IAsyncStateMachine&#xff09;調度方式Unity 內部調用 MoveNext()自建 PlayerLoopRunner 控制狀態推進內存管理引用類型&#xff0c;頻繁分配 GC結構體 UniTask&#xff0c;低 GC 壓力…

MAC軟件打開提示已損壞:“已損壞,打不開。您應將它移到廢紙簍“

打開「終端.app」&#xff0c;輸入以下命令并回車&#xff0c;輸入開機密碼回車 sudo spctl --master-disable 按照上述步驟操作完成后&#xff0c;打開「系統偏好設置」-「安全與隱私」-「通用」&#xff0c;確保已經修改為「任何來源」。 打開「終端.app」&#xff0c;輸入…

JAVA之 Lambda

Java Lambda Lambda 表達式是 Java 8 的核心特性&#xff0c;通過 函數式編程 大幅簡化代碼。其核心思想是將行為作為參數傳遞&#xff0c;替代匿名內部類&#xff0c;提升代碼的簡潔性和可讀性。以下是系統解析和完整代碼示例&#xff1a; 一、Lambda 表達式基礎 語法結構 (…

Starrocks中RoaringBitmap雜談

背景 最近在閱讀Starrocks源碼的時候&#xff0c;遇到ColumnRefSet的RoaringBitmap使用&#xff0c;所以借此來討論一下RoaringBitmap這個數據結構,這種思想是很值得借鑒的。 對于的實現可以參考一下 <dependency><groupId>org.roaringbitmap</groupId><…

數據結構:泰勒展開式:霍納法則(Horner‘s Rule)

目錄 &#x1f50d; 若用遞歸計算每一項&#xff0c;會發生什么&#xff1f; Horners Rule&#xff08;霍納法則&#xff09; 第一步&#xff1a;我們從最原始的泰勒公式出發 第二步&#xff1a;從形式上重新觀察展開式 &#x1f31f; 第三步&#xff1a;引出霍納法則&…

從Java的Jvm的角度解釋一下為什么String不可變?

從Java的Jvm的角度解釋一下為什么String不可變&#xff1f; 從 JVM 的角度看&#xff0c;Java 中 String 的不可變性是由多層次的機制共同保障的&#xff0c;這些設計涉及內存管理、性能優化和安全保障&#xff1a; 1. JVM 內存模型與字符串常量池 字符串常量池&#xff08;St…

初識硬編碼(x86指令描述)

硬編碼 任何一個程序其實都可以看做兩部分組成的&#xff0c;指令和數據 cpu并沒有明確的規定哪些要當做數據&#xff0c;哪些要當做指令來執行&#xff0c;把數據給EIP只要是遵循了指定的格式&#xff08;x86 x64 ARM&#xff09;&#xff0c;cpu都會當做指令來執行 x86/x64…

3.RV1126-OPENCV 圖像疊加

一.功能介紹 圖像疊加&#xff1a;就是在一張圖片上放上自己想要的圖片&#xff0c;如LOGO&#xff0c;時間等。有點像之前提到的OSD原理一樣。例如&#xff1a;下圖一張圖片&#xff0c;在左上角增加其他圖片。 二.OPENCV中圖像疊加常用的API 1. copyTo方法進行圖像疊加 原理…