Python-基礎知識彙集

1.列表

列表是最常用的Python數據類型,它可以作為一個方括弧內的逗號分隔值出現。

列表的數據項不需要具有相同的類型

創建一個列表,只要把逗號分隔的不同的數據項使用方括弧括起來即可

image-20220602164738531

程式碼理解:列表的索引,列表數據的增刪改,以及列表推導式的使用

# 列表
all_in_list=[0.3,'hello','True']
print('列表數據為:',end='')
print(all_in_list)

# 正向索引從開始
res=all_in_list[0]
print('all_in_list[0]的值為:',end='')
print(res)
# 反向所有從-1開始
res=all_in_list[-2]
print('all_in_list[-2]的值為:',end='')
print(res)
# 列表的切片,左閉右開
res=all_in_list[0:2]
print('all_in_list[0:2]的切片值為:',end='')
print(res)

# 末尾新增元素
all_in_list.append('hello world')
# 指定位置前插入元素,成為指定位置上的元素
all_in_list.insert(0,'pre-hello')
print('添加新元素後為:',end='')
print(all_in_list)

# 刪除元素
all_in_list.remove('hello world')
# 刪除前兩個元素
del all_in_list[:2]
print('刪除元素後為:',end='')
print(all_in_list)

# 修改元素值
all_in_list[0]=100
print('修改元素後為:',end='')
print(all_in_list)

# for循環
x=[]
for i in range(10):
    x.append(i)

print('for循環添加元素後為:',end='')
print(x)

#列表推導式
b=[i for i in range(1,11)]
c=[i**2 for i in range(1,11)]
d=[i**2 for i in range(1,11) if i%2==0]
print('各個列表推導式的值為:',end='')
print(b)
print(c)
print(d)

#練習1:求曲邊梯形的面積
import math
n=10000
width=2*math.pi/n
# 方法一:利用for循環構建核心數據結構
x=[]
y=[]
for i in range(n):
    x.append(i*width)
for i in x:
    y.append(abs(math.sin(i)))
S=sum(y)*width
print('方法一曲邊梯形的面積為:',end='')
print(S)
# 方法二:利用列表推導式構建核心數據結構
s=[abs(math.sin(i*width))*width for i in range(n)]
print('方法二曲邊梯形的面積為:',end='')
print(sum(s))

程式碼運行結果

image-20220628205752019

2.操作符

Python語言常用以下類型的運算符:算術運算符、比較關係操作符、賦值操作符、邏輯操作符

image-20220628214645482

image-20220628214716907

image-20220628214743100

image-20220628214759258

程式碼理解:邏輯控制符、字元串的包含in、條件判斷語句、冒泡排序的交換值操作

# Python邏輯控制符
res=1<2
print('1<2的正確性:',end='')
print(res)
res=1<2<3
print('1<2<3的正確性:',end='')
print(res)
res='Name'=='name'
print("'Name'=='name'的正確性:",end='')
print(res)
res='M' in 'magic'
print("'M'在'magic'里的正確性:",end='')
print(res)

# 條件判定語句
if 1<2:
    print('如果1<2正確,則輸出:', end='')
    print('1.hello')

if 1<0:
    print('如果1<0正確,則輸出:', end='')
    print('2.hello')
else:
    print('如果1<0不正確,則輸出:', end='')
    print('2.world')

if 1<0:
    print('如果1<0正確,則輸出:', end='')
    print('3.hello')
elif 2<1:
    print('如果1<0不正確,但2<1正確,則輸出:', end='')
    print('3.world')
else:
    print('如果1<0不正確,且2<1也不正確,則輸出:', end='')
    print('3.hehe')


# 冒泡排序
x=[1,2,6,0.3,2,0.5,-1,2.4]
print('冒泡排序前值為:', end='')
print(x)
n=len(x)
for i in range(n):
    for j in range(i):
        if x[j]>x[i]:
            # 交換值
            x[i],x[j]=x[j],x[i]

print('冒泡排序後值為:', end='')
print(x)

程式碼運行結果

image-20220628205812942

3.字典

字典是另一種可變容器模型,且可存儲任意類型對象。

字典的每個鍵值 key:value 對用冒號 : 分割,每個鍵值對之間用逗號 , 分割,整個字典包括在花括弧 {} 中 ,格式如下所示:d = {key1 : value1, key2 : value2 }

程式碼理解:根據字典索引值,修改值,添加值,刪除值,以及字典推導式生成字典

# 字典
dic={'h':'hello',0.5:[0.2,0.3],'w':'world'}
print('字典數據為:',end='')
print(dic)

#根據鍵索引值
res=dic['h']
print("dic['h']對應的值為:",end='')
print(res)
# 根據鍵修改一個元素
dic['h']=100
print("修改後的字典為:",end='')
print(dic)
# 添加一個元素
dic['hw']='hello world'
print("添加一個鍵值後的字典為:",end='')
print(dic)
# 同時添加多個元素
dic.update({1:2,3:4})
print("添加多個鍵值後的字典為:",end='')
print(dic)
# 根據鍵刪除某個元素
del dic['h']
print("刪除鍵值後的字典為:",end='')
print(dic)

# 字典推導式
a={i:i**2 for i in range(10)}
print("使用字典推導式生成的字典為:",end='')
print(a)

程式碼運行結果

image-20220628210642610

4.字元串

字元串是 Python 中最常用的數據類型。我們可以使用引號 ( ) 來創建字元串。

創建字元串很簡單,只要為變數分配一個值即可。

image-20220628214824156

程式碼理解:字元串帶換行和不帶換行的兩種生成方式、字元串的索引,拼接基本操作、字元串分割、字元串全轉為小寫

# 字元串,雙引號字元串和單引號無區別
string="My name"
print('生成的字元串為:'+string)
# 三引號可以進行換行
string='''My

name
'''
print('生成的有換行的字元串為:'+string)
string='My name'
print('單引號與雙引號生成的字元串相同,它為:'+string)
print(string)
# 索引字元串第一個元素
print('字元串第一個元素為:'+string[0])
# 索引字元串前兩個元素
print('字元串前兩個元素為:'+string[:2])
# 重複兩次字元串
print('重複兩次字元串為:'+string*2)
# 拼接字元串
print('拼接字元串為:',end='')
print(string+' is xxx')

# 分割字元串,根據逗號進行分割, 返回結果為列表
res=string.split(sep=',')
print('根據逗號進行分割字元串後為:',end='')
print(1,string)
# 將字元串字母全部變成小寫
res=string.lower()
print('將字元串字母全部變成小寫為:',end='')
print(res)

程式碼運行結果

image-20220628212057291

5.文件

image-20220628214850624

image-20220628214910702

image-20220628215003133

程式碼理解

# 文件操作
f=open("Walden.txt","r")
# 讀取文件內容
txt=f.read()
print(txt)
# 讀取文件內容的前100行
txt=f.read(100)
print(txt)
f.close()
# 逐行讀取文件內容,並返回列表
f=open("Walden.txt","r")
txt_lines=f.readlines()
print(txt_lines)
f.close()

#練習3:讀取小說中的單詞頻次
import re
f=open("Walden.txt","r")
# 讀取進來的數據類型是字元串
txt=f.read()
f.close()
# 將字元串中字元變為小寫
txt=txt.lower()
# 去除小說中的標點符號
txt=re.sub('[,.?:「\』!-]','',txt)
# 單詞分割
words=txt.split()
word_sq={}
for i in words:
    if i not in word_sq.keys():
        word_sq[i]=1
    else:
        word_sq[i]+=1
# 排序
res=sorted(word_sq.items(),key=lambda x:x[1],reverse=True)
print(res)

6.函數

你可以定義一個由自己想要功能的函數,以下是簡單的規則:

  • 函數程式碼塊以 def 關鍵詞開頭,後接函數標識符名稱和圓括弧()
  • 任何傳入參數和自變數必須放在圓括弧中間。圓括弧之間可以用於定義參數。
  • 函數的第一行語句可以選擇性地使用文檔字元串—用於存放函數說明。
  • 函數內容以冒號起始,並且縮進。
  • return [表達式] 結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當於返回 None。

程式碼理解

#函數自定義
#第一種方式
def Sum(x,y):
    return x+y

# 第二種方式,函數的簡單自定義
# 返回x的平方
y=lambda x:x**2
# 返回x的第一個元素
y1=lambda x:x[1]

res=Sum(1,2)
print(res)
res=y(10)
print(res)
res=y1(['hello',0])
print(res)

#練習4:自定義求序列偶數個數的函數
def su(x):
    z=0
    for i in x:
        if i%2==0:
            z+=1
    return z
res=su([1,2,3,4,5,6])
print(res)

7.面向對象

面向對象的一些基本特徵:

  • 類(Class): 用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。
  • 類變數:類變數在整個實例化的對象中是公用的。類變數定義在類中且在函數體之外。類變數通常不作為實例變數使用。
  • 數據成員:類變數或者實例變數, 用於處理類及其實例對象的相關的數據。
  • 方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。
  • 局部變數:定義在方法中的變數,只作用於當前實例的類。
  • 實例變數:在類的聲明中,屬性是用變數來表示的。這種變數就稱為實例變數,是在類聲明的內部但是在類的其他成員方法之外聲明的。
  • 繼承:即一個派生類(derived class)繼承基類(base class)的欄位和方法。繼承也允許把一個派生類的對象作為一個基類對象對待。例如,有這樣一個設計:一個Dog類型的對象派生自Animal類,這是模擬”是一個(is-a)”關係(例圖,Dog是一個Animal)。
  • 實例化:創建一個類的實例,類的具體對象。
  • 方法:類中定義的函數。
  • 對象:通過類定義的數據結構實例。對象包括兩個數據成員(類變數和實例變數)和方法。

程式碼理解

# 方法與函數的區別
all_in_list=[2.5,'hello','world',3]
string='My name'
all_in_list.append('hehe')
#對於字元串對象而言,是沒有append方法的
#string.append('Y』)

res=string.split()
# split是一個方法,是字元串對象才有的一種方法
#all_in_list.split()
print(all_in_list)
print(res)

# 面向對象
class Human:
    def __init__(self,ag=None,se=None):
        # 類的屬性
        self.age=ag
        self.sex=se
    # 類的方法
    def square(self,x):
        return x**2

zhangfei=Human(ag=23,se='男')
res=zhangfei.square(10)
print(res)
res=zhangfei.age
print(res)
res=zhangfei.sex
print(res)
Tags: