1. 程式人生 > 其它 >python中的公共操作與列表推導式

python中的公共操作與列表推導式

1.公共操作

# + 合併 將兩個相同型別序列進行連線 字串、 列表、元組
l1 = [1, 2, 3]
l2 = [4, 5, 6]
print(l1+l2)  # [1, 2, 3, 4, 5, 6]
# * 複製 將裡面的資料進行復制 字串、列表、元組
l1 = [1, 2, 3]
print(l1 * 3)  # [1, 2, 3, 1, 2, 3, 1, 2, 3]
# len 獲取序列長度 檢視序列長度 字串、列表、元組、字典,集合
# 返回一個int型別
print(len([1, 2, 3, 4]))  # 4
# reversed 倒置 將容器裡面的資料倒置 字串、列表、元組、字典
l1 = [1, 2, 3] print(reversed(l1)) # 是個序列 <list_reverseiterator object at 0x000001C447207040> print(list(reversed(l1))) # 可以轉換為列表 for i in reversed(l1): # 也可以for迴圈輸出 print(i)
# in,not in 是否存在 判斷資料是否存在於容器內 字串、列表、元組、字典,集合
l1 = ['小明', '小芳']
print('' in l1)  # False
print('小明' in l1)  # True
#
del 刪除 刪除變數或者指定容器內資料 變數,容器裡面的值 l1 = ['小明', '小芳'] del l1[0] print(l1) # ['小芳']
# max,min 最大最小值 求容器資料的最大最小值 字串、列表、元組、字典,集合
l1 = [1, 4, 2]
print(max(l1), min(l1))  # 4 1
# 字串按ASCII碼取大取小
l2 = ['aa', 'ay', 'az']  # az aa
print(max(l2), min(l2))
# sum 求和 將容器的資料求和 列表、元組、字典,集合
d = {1: 2, 2: 3}
print
(sum(d)) # 對字典也可操作 key值相加 l1 = [1, 3, 5, 7, 9] print(sum(l1))
# enumerate 列舉 索引對映 將索引對映給容器裡面的資料 列表、元組、或字串
l1 = ['a', 'b', 'c']
print(enumerate(l1))  # 是個序列
# 要麼轉換成常見資料型別,要麼for迴圈
print(list(enumerate(l1)))  # 不寫start預設索引從0開始
for index, data in enumerate(l1, start=5):  # 索引從5開始
    print(index, data)

2.列表推導式

# 普通寫法
# 建立列表 迴圈資料 新增資料 沒有其他操作
list_data = []
for i in range(10):
    list_data.append(i)

print(list_data)

# 推導式寫法  不是所有的程式碼都可以寫成推導式
# 推導式只有一種固定的操作
# 建立列表 []
# 迴圈資料 for i in range(10)
# 新增資料 i
list_data = [i for i in range(10)]
print(list_data)
# print([i for i in range(10)])
# 普通寫法
# 建立列表 迴圈資料 新增資料 沒有其他操作
list_data = []
for i in range(10):
    list_data.append(str(i*2))

print(list_data)

# 推導式寫法
# 建立列表[]
# 迴圈列表 for i in range(10)
# 新增資料 i*2
print([str(i*2) for i in range(10)])
# 普通寫法
# 建立列表 迴圈資料 新增資料位置永遠在最前面
list_data = []
for i in range(10):
    if i%2 == 0:
        list_data.append(i)

print(list_data)  # [0, 2, 4, 6, 8]

# 推導式寫法
# 建立列表 []
# 迴圈資料 for i in range(10)
# 新增資料位置永遠在最前面 i
# if放後面  if i%2 == 0
print([i for i in range(10) if i%2 == 0])
# 普通寫法
# 建立列表 迴圈資料 新增資料位置永遠在最前面
list_data = []
for i in range(10):
    if i%2 == 0:
        if i%3 == 0:
            list_data.append(i)

print(list_data)  # [0, 6]

# 推導式寫法
# 建立列表 []
# 迴圈資料 for i in range(10)
# 新增資料位置永遠在最前面 i
# if放後面  if i%2 == 0 if i%3 == 0
print([i for i in range(10) if i%2 == 0 if i%3 == 0])

3.三元表示式

# 3.三元表示式
# 一元 not  not True
# 二元 +

# 普通寫法
age = 20
if age>18:
    print('成年')
else:
    print('未成年')

# 三元表示式
# 判斷寫中間  if age>18 else
# 滿足條件後的結果寫前面  print('成年')
# 不滿足條件後的結果寫後面  print('未成年')
print('成年') if age>18 else print('未成年')
# 普通寫法
age = 20
if age>18:
    data = 1
else:
    data = 0
print(data)

# 三元表示式寫法
# 判斷寫中間  if age>18 else
# 滿足寫前面  1  不是data=1
# 不滿足寫後面  0  不是data=0
# 注意和上面有一些不同!
# data =      1    if age>18 else    0
data = 1 if age>18 else 0
print(data)
# 普通寫法
list_data = []
for i in range(10):
    if i%2 == 0:
        list_data.append(i)
    else:
        list_data.append(str(i))

print(list_data)

# 三元表示式和列表推導式一起寫
# 建立列表  []
# 迴圈列表  for i in range(10)
# 新增資料位置永遠在最前面  i if i%2 == 0 else str(i)
# 注意新增的資料不是i,是i和str(i)中的一個
# list_data = [i if i%2 == 0 else str(i) for i in range(10)]
list_data = [(i if i%2 == 0 else str(i)) for i in range(10)]  # 利用小括號來增加一點可讀性
print(list_data)
# 請用列表推導式完成1到100(不包括1和100)內所有奇數的和

# 列表推導式寫法
list_data = [i for i in range(2, 100) if i%2 == 1]
print(sum(list_data))

# 普通寫法
list_data = []
for i in range(2, 100):
    if i%2 == 1:
        list_data.append(i)

print(sum(list_data))