天天看點

匿名函數+高階函數+python檔案操作

1.匿名函數

變量 = lambda 形參1,形參2,...: 單行表達式 或者 調用其它函數的代碼

變量(實參1,實參2,...)      

2.遞歸函數(了解)

"""
遞歸函數:
        在函數裡面自己調用自己.

    定義遞歸函數的條件:
        1.自己調用自己
        2.必須設定一個終止遞歸條件

使用遞歸函數求 1-5的累加和.

"""


def sum(n):
    # 條件2:設定終止遞歸的條件
    if n == 1:
        return 1
    else:
        # 條件1:自己調用自己
        return + sum(n-1)


print(sum(5))      

3.清單 推導式

清單名 = [x for x in range()函數 ]      

4.清單推導式的練習題

"""
清單推導式的格式:
    清單名 = [x for x in range()函數]
    每次循環循環都得一個數字x,然後把x作為元素添加到清單中

在清單推導式中使用 if語句:
    清單名 = [x for x in range()函數 if 條件]
"""
list1 = [x for x in range(1, 5)]
print(list1)
list2 = [x+2 for x in range(1, 5)]
print(list2)

list3 = [x for x in range(20) if x % 2 == 0]
print(list3)
a = [x for x in range(1,101)]
print(list(range(0,len(a),3)))
print(range(0,len(a),3))

a[0:3] # [1,2,3]
a[3:6] # [4,5,6]      

5.set 集合

"""
set集合:
    也是一個容器,可以存儲多個元素,可以是任何類型的.
    沒有索引.
    特點:
        set中不能存儲重複的元素,自動去重,重複的元素隻保留一個.
定義格式:
    set集合名 = {元素1,元素2,...}
    # 定義空的set集合
    set集合名 = set()
"""
set1 = {10, "hello", True}
print(set1) # {True, 10, 'hello'}
print(type(set1)) # <class 'set'>

# 自動去重
set2 = {10, "hello", True, 10, "hello"}
print(set2)

set3 = {30, 50}
# set2.update(set3)

set2.update("hello")
print(set2)

set4 = set("hello")
print(set4)

for s in set4:
    print(s)      

6.set、list、tuple之間的類型轉換

"""
資料類型轉換的格式:
    目标資料類型(資料)
"""
# set->list
set1 = {10, 20, 30}
list2 = list(set1)
print(list2)

set2 = set(list2)
print(set2)

list3 = [10, 20, 10, 30, 50]
set3 = set(list3)
list4 = list(set3)
print(list4)      

7.高階函數

map():
    map(f, list)
    
functools.reduce(f, list)

filter(f, list)
'''reduce'''
import functools

my_list = [1, 2, 3, 4, 5]


def f(x1, x2):
    return x1 * x2


result = functools.reduce(f, my_list)
print(result)      

8.檔案的概述

010101011      

9.操作檔案的步驟

"""
步驟:
    1.打開檔案
    2.讀/寫資料
    3.關閉檔案
"""
# 1.打開檔案
f = open("a.txt", "r")

# 2.寫資料
f.write("hello")
f.write("python")
f.write("android")

# 3.關閉檔案
f.close()      

10.檔案操作模式的介紹

r: read

w: write

a: append

rb:
wb:
ab:      

11.讀取檔案的四種方式

1.一次讀取幾個字元
  f.read(n)
2.一次讀取一行
  f.readline()
3.一次讀取所有字元
  f.read()
4.按行讀取所有行
  f.readlines()      

12.制作檔案的備份

import os

'''
制作檔案的備份
'''
filename = input("請輸入你需要備份的檔案夾:")
list1 = os.listdir(filename)
print(list1)
new_filename = filename+"備份"
os.mkdir(filename+"備份")
# os.chdir(new_filename)
for file in list1:
    """
    先做好名字
    """
    index = file.find(".")
    new_file_start = file[:index]+"備份"
    new_file_end = file[index:]
    new_file = new_file_start+new_file_end
    """
    讀取源資料
    """
    f1 = open(filename+"/"+file,"r")
    content = f1.read()
    f2 = open(new_filename+"/"+new_file,"w")
    f2.write(content)
    '''關閉檔案 '''
    f1.close()
    f2.close()      

13.檔案和檔案夾的操作方法

import os 
os.mkdir()
os.getcwd()
os.chdir()
os.listdir()
os.rmdir()