列表是最常用的Python數據類型,它可以作為一個方括號內的逗號分隔值出現。
列表的數據項不需要具有相同的類型
創建一個列表,只要把逗號分隔的不同的數據項使用方括號括起來即可
代碼理解:列表的索引,列表數據的增刪改,以及列表推導式的使用
# 列表
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))
代碼運行結果
Python語言常用以下類型的運算符:算術運算符、比較關系操作符、賦值操作符、邏輯操作符
代碼理解:邏輯控制符、字符串的包含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)
代碼運行結果
字典是另一種可變容器模型,且可存儲任意類型對象。
字典的每個鍵值 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)
代碼運行結果
字符串是 Python 中最常用的數據類型。我們可以使用引號 ( ' 或 " ) 來創建字符串。
創建字符串很簡單,只要為變量分配一個值即可。
代碼理解:字符串帶換行和不帶換行的兩種生成方式、字符串的索引,拼接基本操作、字符串分割、字符串全轉為小寫
# 字符串,雙引號字符串和單引號無區別
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)
代碼運行結果
代碼理解
# 文件操作
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)
你可以定義一個由自己想要功能的函數,以下是簡單的規則:
代碼理解
#函數自定義
#第一種方式
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)
面向對象的一些基本特征:
代碼理解
# 方法與函數的區別
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)