數據結構列表練習
1、求10萬內的所有素數
import datetime
start=datetime.datetime.now()
import math
primenumber = [2]
flag = False
for i in range(3,100000,2):
if i > 10 and i % 10 == 5:
continue
edge = math.ceil(math.sqrt(i))
for j in primenumber:
if i % j == 0 :
flag = True
break
if j >= edge:
flag = False
break
if not flag:
print(i)
primenumber.append(i)
delta = (datetime.datetime.now() - start).total_seconds() #時間計算
print(delta)
2、計算楊輝三角前6行
(1)方法1:補頭和尾,中間循環
triangle = [[1],[1,1]]
n = 6
for i in range(2,n):
newline = [1]
pre = trangle[i-1]
for j in range(i-1):
val = pre[j] + pre[j+1]
newline.append(val)
newline.append(1)
trangle.append(newline)
print(trangle)
(2)方法1變體
n = 6
for i in range(n): #如果不想每次判斷,則把[1]放在循環外邊
newline = [1]
if i == 0:
print(newline)
continue
for j in range(i-1):
val = pre[j] + pre[j+1]
newline.append(val)
newline.append(1)
print(newline)
pre = newline
(3)方法2:尾部補0法
n = 6
for i in range(1,n):
if i == 0:
newline = [1]
print(newline)
newline.append(0)
oldline = newline
continue
newline = []
for j in range(i+1):
newline.append(oldline[j-1] + oldline[j])
print(newline)
newline.append(0)
oldline = newline
(4)方法2變體:尾部補0法
n = 6
newline = [1]
print(newline)
newline.append(0)
for i in range(1,n):
newline = []
for j in range(i+1):
newline.append(oldline[j-1] + oldline[j])
print(newline)
newline.append(0)
oldline = newline
(5)方法3:一次性開闢空間,再對稱。
n = 6
triangle = []
for i in range(n):
row = [1] * (i+1) #一次性開闢
triangle.append(row)
for j in range(1,i//2+1): # i=2,第三行才能進來
val = triangle[i-1][j-1] + triangle[i-1][j]
row[j] = val
if i != 2*j: #奇數個數的中點跳過
row[-j-1] = val
print(triangle)
(6)方法4:單行覆蓋
n = 6
row = [1] * n #一次性開闢足夠的空間
for i in range(n):
offset = n - i
z = 1 #因爲會有覆蓋影響計算,所以引入一個臨時變量
for j in range(1,i//2+1):
val = z + row[j]
row[j],z = val,row[j]
if i != 2*j:
row[-j-offset] = val
print(row[:i+1])
3、依次接收用戶輸入的3個數,排序後打印
(1)分支結構
nums = []
out = None
for i in range(3):
nums.append(int(input('{}: '.format(i))))
if nums[0]>nums[1]:
if nums[1]>nums[2]:
out = [0,1,2]
elif nums[0]>nums[2]:
out = [0,2,1]
else:
out = [2,0,1]
elif nums[0]>nums[2]:
out = [1,0,2]
elif nums[1]>nums[2]:
out = [1,2,0]
else:
out = [2,1,0]
out.reverse()
for i in out:
print(nums[i],end=',')
(2)max函數
nums = []
out = None
for i in range(3):
nums.append(int(input('{}: '.format(i))))
#此處不能使用for循環,不能一邊迭代該列表,同時刪除或者增加該列表
while True:
cur = max(nums)
print(cur)
nums.remove(cur)
if len(nums) == 1:
print(nums[0])
break
(3)列表sort實現
nums = []
for i in range(3):
nums.append(int(input('{}: '.format(i))))
nums.sort()
print(nums)
4、經典冒泡法。
(1)初始實現
lst = [9,5,1,2,6]
length = len(lst)
for i in range(length):
for j in range(length-1-i):
if lst[j] > lst[j+1]:
lst[j], lst[j+1] = lst[j+1], lst[j]
print(lst)
(2)優化實現
lst = [9,5,1,2,6]
length = len(lst)
for i in range(length):
flag = False
for j in range(length-1-i):
if lst[j] > lst[j+1]:
lst[j], lst[j+1] = lst[j+1], lst[j]
flag = True
if not flag:
break
print(lst)
數據結構列表練習
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Python3高级核心技术97讲
wy53780
2020-04-23 15:37:39
python網絡爬蟲
aabcdqt
2019-05-06 20:35:05
Python與家國天下
豌豆花下貓
2019-02-24 22:22:40
seaborn 安裝成功 + ImportError: DLL load failed: 找不到指定的模塊 問題解決
耗子
2019-02-24 19:55:04
使用 Sphinx 撰寫技術文檔並生成 PDF 總結
qiwihui
2019-02-24 16:25:14
Python實現二叉樹相關算法
backbp
2019-02-24 15:35:06
Ubuntu16.04安裝Python3.7及其pip3並切換爲默認版本
ipromise
2019-02-24 14:15:00
Python2+Selenium入門05-關於WebElement類
白雪
2019-02-24 13:45:04
Python——數據類型
陳晨工程師
2019-02-24 13:43:55
Python 操作PDF庫介紹之PDFMiner
iCloudEnd
2019-02-24 13:39:59
Python reportlab 之 draw函數介紹
iCloudEnd
2019-02-24 13:39:59
Python reportlab之pdfgen 介紹(含代碼)
iCloudEnd
2019-02-24 13:39:59
Python手繪圖瞭解一下!
python攻城獅
2019-02-24 13:34:06
Python繪製圖表【matplotlib】
流域哈哈
2019-02-24 13:20:58
Python2+Selenium入門04-關於WebDriver類
白雪
2019-02-24 12:45:06