python006 列表練習題
# 練習1
# 有一個列表names,儲存了一組姓名 names=['names1','names2','names3','names4']
# 再讓使用者輸入一個姓名,如果這個姓名在列表中存在,提示使用者姓名已存在
# 如果這個姓名在列表中不存在,就將這個姓名新增到列表裡
names = ['names1','names2','names3','names4']
username = input('請輸入名字:')
# 使用 if 語句
if username in names:
print("使用者名稱已存在。")
else:
names.append(username)
# 使用遍歷
for name in names:
if username == name:
print('使用者名稱已存在。')
break
else:
names.append(username)
print(names)
print()
# 練習2
# 冒泡
# 氣泡排序思想:
# 讓一個數字和它相鄰的下一個數字進行比較運算
# 如果前一個數字大於後一個數字,則交換兩個數的位置
# 此時,最大的數就在最後了
nums = [6, 5, 3, 1, 8, 7, 2, 4]
count = 0
i = 0
# 第一趟比較時,多比較了0次,i = 0
# 第二趟比較時,多比較了1次,i = 1
# 第三趟比較時,多比較了2次,i = 2
# 趟數由 i 控制,次數由 n 控制
while i < len(nums) - 1:
# 在每一趟裡面都定義一個flag
flag = True # 假設每一趟都沒有換行
n = 0
# 以下迴圈就是將大的數往後移
while n < len(nums) - 1 - i:
count += 1
# print(nums[n], nums[n+1])
if nums[n] > nums[n+1]:
# 只要交換了,假設就不成立
flag = False
nums[n], nums[n + 1] = nums[n+1], nums[n]
n += 1
if flag:
# 這一趟走完以後,flag依然是True,說明這一趟沒有進行資料交換
break
i += 1
print(nums) # [5, 3, 1, 6, 7, 2, 4, 8]
# 外層迴圈出來的結果,按從小到大的排序
print('比較了%d次'% count)
print()
# 練習3
# 求列表裡的最大數
nums = [3, 1, 9, 8, 4, 2, 0, 7, 5]
# 方法1
# 先升序,後提取最後一個
nums.sort()
print(nums[-1])
# 方法2
# 先降序,後提取第一個
nums.sort(reverse=True)
print(nums[0])
# 方法3
# 不排序,直接找
# 思想:假設一個數是0,將假設的數和列表的進行對比,一旦列表的數大於假設的數就提取
# 但是,此時可能出現你假設的數比要比較的數都大
# 所以一般都是直接用列表裡面的數進行比較
x = nums[0] # 假設最大的數是第1個(索引0)
for num in nums:
if num > x:
# 如果發現列表裡面存在比假設還要大的數字,說明假設不存在
# 此時應該把假設的值替換為被發現的值
x = num
# 使用自帶的 index 方法來獲取下標
print('發現的最大數是:%d,它的下標是%d' % (x, nums.index(x)))
x = nums[0]
index = 0
i = 0
while i < len(nums):
if nums[i] > x:
x = nums[i]
index = i
i += 1
# print('發現的最大數是:%d,它的下標是%d' % (x, index))
print()
# 練習4
# 刪除列表裡的空字串
xs = ['h1','h2','','','h4','h5','']
# 方法1
# 在使用 for……in 迴圈遍歷列表時,最好不要對元素進行增刪操作
for x in xs:
if x == '':
xs.remove(x)
print(xs)
# ['h1', 'h2', 'h4', 'h5', '']
# 在刪掉之後,就不再看刪掉的位置的值了(下標問題)
# 但是值被刪掉後,後面的值會向前擠,此時就會漏掉刪掉位置的新值
# 方法2
i = 0
while i < len(xs):
if xs[i] == '':
xs.remove(xs[i])
i -= 1 # 為了返回原先的位置,再對比一遍
i += 1 # 向前檢查
print(xs)
# ['h1', 'h2', 'h4', 'h5']
# 方法3
xs2 = [] # 建立一個空列表
for x in xs:
if x != '':
xs2.append(x) # 把不是空字串的值新增進空列表裡面
xs = xs2 # 用新列表把原先的列表替換掉
print(xs)
相關文章
- Python練習題篇(列表、字典、元祖)Python
- python基礎(四)----列表、字典練習題Python
- Python-100 練習題 01 & 列表推導式Python
- 新手練習:Python練習題目Python
- mysql練習題MySql
- TypeScript 練習題TypeScript
- java練習題Java
- SQL 練習題SQL
- SQL練習題SQL
- 課時31.無序列表練習(理解)
- Python 練習題Python
- mysql面試練習題MySql面試
- 程式練習題(2)
- oracle sql練習題OracleSQL
- 陣列練習題陣列
- Flutter(十二)之練習高仿豆瓣電影列表Flutter
- Python 小練習 剔除列表內重複資料Python
- JAVA 基礎練習題Java
- java異常練習題Java
- Java Web概述-練習題JavaWeb
- python練習題解析Python
- linux練習題(二)Linux
- 3 月水題練習
- mysql函式練習題MySql函式
- 軟體工程練習題軟體工程
- U7-11課綜合練習+12課階段測評練習——複習練習題目
- web前端 javascript 練習題一Web前端JavaScript
- 動態規劃練習題動態規劃
- linux基礎練習題Linux
- Python基礎練習題Python
- java String類練習題Java
- Java練習題-評委打分Java
- 五、python的練習題Python
- Python函式練習題Python函式
- python相關練習題Python
- (前++) 和 (後++)的練習題
- 函式指標練習題函式指標
- Java第十二章練習習題Java