python里如何用递归法列出一个tree里所有的枝干? python怎么用递归遍历多层目录树

python\u91cc\u5982\u4f55\u7528\u9012\u5f52\u6cd5\u5217\u51fa\u4e00\u4e2atree\u91cc\u6240\u6709\u7684\u679d\u5e72\uff1f

\u4f60\u753b\u4e2a\u56fe\u522b\u4eba\u4e5f\u4e0d\u77e5\u9053\u4f60\u7684tree\u7684\u6570\u636e\u7ed3\u6784\uff0c\u4f60\u8981\u5199\u51fa\u8fd9\u4e2atree\u5728python\u4e2d\u662f\u5982\u679c\u8868\u8fbe\u7684\uff0c\u624d\u80fd\u5199\u5bf9\u5e94\u7684\u904d\u5386\u4ee3\u7801\u554a\u3002

\u5982\u679c\u89e3\u51b3\u4e86\u60a8\u7684\u95ee\u9898\u8bf7\u91c7\u7eb3\uff01
\u5982\u679c\u672a\u89e3\u51b3\u8bf7\u7ee7\u7eed\u8ffd\u95ee

Python\u5b9e\u73b0\u9012\u5f52\u904d\u5386\u6307\u5b9a\u6587\u4ef6\u76ee\u5f55\uff08startdir\uff09\uff0c\u4ece\u800c\u627e\u5230\u6240\u6709\u4e0e\u6307\u5b9a\u7684\u6587\u4ef6\u6216\u76ee\u5f55\uff08target\uff09\u540d\u76f8\u540c\u7684\u6587\u4ef6\u6216\u76ee\u5f55\u7684\u7edd\u5bf9\u8def\u5f84\u3002

scandir.py :
#! /usr/bin/python

# filename : scandir.py

# author : Jesse

# update : 2011/08/15 10:16

import os

def scandir(startdir, target) :

os.chdir(startdir)

for obj in os.listdir(os.curdir) :

if obj == target :

print os.getcwd() + os.sep + obj

if os.path.isdir(obj) :

scandir(obj, target)

os.chdir(os.pardir) #!!!

startdir = raw_input('Please input startdir: ')

target = raw_input('Please input target: ')

scandir(startdir, target)

\u5173\u4e8e\u8be5\u7a0b\u5e8f\u7684\u4e00\u70b9\u8bf4\u660e\uff1a
1. \u51fd\u6570scandir\u7684\u5f62\u53c2target\u53ef\u4ee5\u662f\u76ee\u5f55\u540d\u4e5f\u53ef\u4ee5\u662f\u6587\u4ef6\u540d\u3002
2. \u51fd\u6570chdir\u7684\u4f5c\u7528\u662f\u5207\u6362\u5230\u6307\u5b9a\u76ee\u5f55\uff0c\u8be5\u53c2\u6570\u5fc5\u987b\u662f\u6709\u6548\u7684\u4e14\u6709\u8bbf\u95ee\u6743\u9650\u7684\u76f8\u5bf9\u8def\u5f84\u6216\u7edd\u5bf9\u8def\u5f84\u3002
3. \u51fd\u6570\u7684\u7b2c\u4e94\u884c\uff0c\u4f7f\u7528getcwd\u51fd\u6570\u4e5f\u662f\u4e3a\u4e86\u53d6\u5f97\u5f53\u524d\u7edd\u5bf9\u8def\u5f84\u3002
4. \u52a0\u53f7\u4f5c\u4e3a\u5b57\u7b26\u4e32\u7684\u8fde\u63a5\u7b26\u3002os.sep\u6839\u636e\u4f60\u7684\u64cd\u4f5c\u7cfb\u7edf\u7ed9\u51fa\u76ee\u5f55\u5206\u9694\u7b26\uff0c\u5728GNU/Linux\u548cUNIX\u4e0a\u5b83\u7684\u8fd4\u56de\u503c\u662f'/',\u5728windows\u4e0a\u5b83\u7684\u8fd4\u56de\u503c\u662f'\\',\u5728Mac OS\u4e0a\u662f\u2018:\u2019,\u4f7f\u7528os.sep\u800c\u4e0d\u76f4\u63a5\u4f7f\u7528\u5b57\u7b26\uff0c\u4f1a\u63d0\u9ad8\u7a0b\u5e8f\u7684\u53ef\u79fb\u690d\u6027\u3002
5. \u9012\u5f52\u8c03\u7528\u540e\uff0c\u4e00\u5b9a\u4e0d\u80fd\u5fd8\u4e86os.chdir(os.pardir)\uff0c\u8fd4\u56de\u4e0a\u5c42\u76ee\u5f55\uff08\u5373\u7236\u76ee\u5f55\uff09\u3002

\u91cd\u8981\uff1a
1. \u7406\u89e3for\u4e2d\u7684\u4e24\u4e2a\u5e76\u5217\u7684if\u8bed\u53e5\uff0c\u5e76\u5217\u662f\u4e3a\u4e86\u89e3\u51b3\u76ee\u6807\u662f\u6587\u4ef6\u5939\u65f6\uff0c\u8be5\u76ee\u6807\u6587\u4ef6\u5939\u4e2d\u5305\u542b\u7b26\u5408\u8981\u6c42\u7684\u6587\u4ef6\u5939\u3002
2. \u5982\u679c\u6307\u5b9a\u76ee\u5f55\u4e2d\u5b58\u5728\u8bbf\u95ee\u53d7\u9650\u7684\u6587\u4ef6\u6216\u6587\u4ef6\u5939\uff0c\u8be5\u7a0b\u5e8f\u4f1a\u5931\u8d25\uff0c\u8fd4\u56de\u65e0\u6743\u8bbf\u95ee\u4fe1\u606f\u3002
http://blog.chinaunix.net/uid-26137687-id-2183259.html

您好:perm函数输出的是参数list从参数k位置开始,到参数m位置结束的全排列
def perm(list,k,m):
if k==m:
for i in range(m+1): # 递归的结束条件是k==m,在整个递归过程中参数m(即结束位置没有改变),而参数k则每次递归+1
print list[i], # 输出递归结束时的list状态
print
else:
for i in range(k,m+1): # 该循环用来负责生成递归的下一个状态
list[k],list[i]=list[i],list[k] # 将list的k位置与每一个位置i分别交换
perm(list,k+1,m) # 由于k位置与每一个位置i交换,也即k位置所有可能选值都已被穷举,此时只需要继续计算k+1之后的职位即可,因此以k+1为开始位置,结束位置m不变进入下一层递归
list[k],list[i]=list[i],list[k] # 由于list是引用传递,因此需要在位置交换之后重新交换,以保证list不变。

  • Python鐢ㄩ掑綊鏂规硶姹傛浖娉㈤偅鏁板垪鐨鍓30椤,姣5涓暟涓琛?
    绛旓細鏇兼尝閭e鏁板垪鏄竴涓粡鍏哥殑閫掑綊鏁板垪锛屽彲浠ヤ娇鐢ㄩ掑綊鍑芥暟鏉ョ敓鎴愩備互涓嬫槸Python涓娇鐢ㄩ掑綊鏂规硶鐢熸垚鏇兼尝閭e鏁板垪鍓30椤癸紝姣5涓暟涓琛岀殑浠g爜绀轰緥锛歚``python def fibonacci(n):if n <= 0:return 0 elif n == 1:return 1 else:return fibonacci(n - 1) + fibonacci(n - 2)鐢熸垚鍓30椤规浖娉㈤偅濂戞暟鍒楋紝...
  • python鎬庝箞鐢ㄩ掑綊杈撳嚭鍒楄〃涓x鐨涓暟
    绛旓細1銆侀鍏堟墦寮JUPYTER NOTEBOOK锛屾柊寤轰竴涓┖鐧界殑PY鏂囨。銆2銆佸叾娆ist = [1 锛 88锛 322锛 0锛 5] 杩欓噷鏈変竴涓垪琛ㄣ佷竴鍏辨湁5涓厓绱犱絾鏄渶瑕佺敤PYTHON璁$畻鍑烘潵銆3銆佹渶鍚巐ist = [1 锛 88锛 322锛 0锛 5] sum = 0 for i in list: sum += 1 print(sum)銆
  • python閲屽浣曠敤閫掑綊娉曞垪鍑涓涓猼ree閲屾墍鏈夌殑鏋濆共?
    绛旓細print list[i], # 杈撳嚭閫掑綊缁撴潫鏃剁殑list鐘舵 print else:for i in range(k,m+1): # 璇ュ惊鐜敤鏉ヨ礋璐g敓鎴閫掑綊鐨涓嬩竴涓姸鎬 list[k],list[i]=list[i],list[k] # 灏唋ist鐨刱浣嶇疆涓庢瘡涓涓綅缃甶鍒嗗埆浜ゆ崲 perm(list,k+1,m) # 鐢变簬k浣嶇疆涓庢瘡涓涓綅缃甶浜ゆ崲锛屼篃鍗砶浣嶇疆鎵鏈夊彲鑳介夊奸兘宸...
  • Python 瀹炵幇閫掑綊
    绛旓細1.棣栧厛import requests搴擄紝鐢ㄥ畠璇锋眰骞惰幏鍙栨帴鍙h繑鍥炵殑鏁版嵁 2.鑻hildren浠ヤ笂杩樻湁寰堝灞傜骇锛屽彲浠ョ缉灏忔暟鎹寖鍥达紝瀹氫綅鍒癱hildren鐨勪笂涓灞傜骇 3.鏉ョ湅鐪嬪畾涔夌殑鍑芥暟 鎴戜滑鐨勫嚱鏁拌皟鐢細find_children(node_f, 'children') 鍏朵腑锛宯ode_f锛歫son瀛楁     children锛閫掑綊瀵硅薄  浠...
  • python閫掑綊绠楁硶缁忓吀瀹炰緥鏈夊摢浜?
    绛旓細绋嬪簭璋冪敤鑷韩鐨勭紪绋嬫妧宸хО涓閫掑綊锛 recursion锛夈傞掑綊鍋氫负涓绉绠楁硶鍦ㄧ▼搴忚璁¤瑷涓箍娉涘簲鐢ㄣ 涓涓繃绋嬫垨鍑芥暟鍦ㄥ叾瀹氫箟鎴栬鏄庝腑鏈夌洿鎺ユ垨闂存帴璋冪敤鑷韩鐨勪竴绉鏂规硶銆傚畠閫氬父鎶婁竴涓ぇ鍨嬪鏉傜殑闂灞傚眰杞寲涓轰竴涓笌鍘熼棶棰樼浉浼肩殑瑙勬ā杈冨皬鐨勯棶棰樻潵姹傝В锛岄掑綊绛栫暐鍙渶灏戦噺鐨勭▼搴忓氨鍙弿杩板嚭瑙i杩囩▼鎵闇瑕佺殑澶氭閲嶅...
  • python閫掑綊姹傛枑娉㈤偅濂戞暟鍒楀墠10椤
    绛旓細浣犲ソ锛屽緢楂樺叴涓轰綘瑙g瓟銆傛牴鎹枑娉㈤偅濂戞暟鍒桭(n)=F(n-1)+F(n-2),褰搉=1鍜宯=2鏃讹紝F(n)=1锛屽彲浠鍒╃敤鍑芥暟+if鍒嗘敮缁撴瀯缂栧啓閫掑綊绋嬪簭锛屾眰鍑烘枑娉㈤偅濂戞暟鍒楀墠10椤广傚叿浣撲唬鐮佸涓嬶細姹傛枑娉㈤偅濂戞暟鍒楀墠10椤
  • 閫掑綊涓庡洖婧:python鍒楄〃缁勫悎闂
    绛旓細combination sumII 缁欏畾涓涓暟缁 candidates 鍜屼竴涓洰鏍囨暟 target 锛屾壘鍑 candidates 涓墍鏈夊彲浠ヤ娇鏁板瓧鍜屼负 target 鐨勭粍鍚堛 candidates 涓殑姣忎釜鏁板瓧鍦ㄦ瘡涓粍鍚堜腑鍙兘浣跨敤涓娆° 璇存槑锛 鎵鏈夋暟瀛楋紙鍖呮嫭鐩爣鏁帮級閮芥槸姝f暣鏁般 瑙i泦涓嶈兘鍖呭惈閲嶅鐨勭粍鍚堛傜粰瀹氶泦鍚坈andidates = [10,1,2,7,6...
  • python閫掑綊鍑芥暟
    绛旓細python閫掑綊鍑芥暟鏄粈涔堬紵涓璧锋潵鐪嬬湅鍚э細閫掑綊鍑芥暟灏辨槸鍦ㄥ嚱鏁板唴閮紝鍙互璋冪敤鍏朵粬鍑芥暟銆傚鏋滀竴涓嚱鏁板湪鍐呴儴璋冪敤鑷韩鏈韩锛岃繖涓嚱鏁板氨鏄掑綊鍑芥暟銆備妇涓緥瀛愶紝鎴戜滑鏉ヨ绠楅樁涔 n! = 1 * 2 * 3 * ... * n锛岀敤鍑芥暟 fact(n)琛ㄧず锛屽彲浠ョ湅鍑猴細fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n...
  • python鎬庝箞鐢ㄩ掑綊閬嶅巻澶氬眰鐩綍鏍
    绛旓細Python瀹炵幇閫掑綊閬嶅巻鎸囧畾鏂囦欢鐩綍锛坰tartdir锛夛紝浠庤屾壘鍒版墍鏈変笌鎸囧畾鐨勬枃浠舵垨鐩綍锛坱arget锛夊悕鐩稿悓鐨勬枃浠舵垨鐩綍鐨勭粷瀵硅矾寰勩俿candir.py :! /usr/bin/python filename : scandir.py author : Jesse update : 2011/08/15 10:16 import os def scandir(startdir, target) :os.chdir(startdir)for obj in ...
  • python涓杈撳叆涓涓暣鏁,杩斿洖涓涓垪琛,灏嗘暟瀛楃敤閫楀彿闅斿紑 鐢ㄩ掑綊瀹屾垚
    绛旓細鎸夌収浣犵殑瑕佹眰,缂栧啓鐨凱ython閫掑綊绋嬪簭濡備笅 def func(l,n): if n==0: return l; else: l.insert(0,n%10) return func(l,n//10)n = int(input())l=[]print(func(l,n))婧愪唬鐮佸涓(娉ㄦ剰婧愪唬鐮佺殑缂╄繘)
  • 扩展阅读:c++和python先学哪个 ... python基础代码大全 ... python递归怎么写 ... 学python有前途吗 ... python求1+2+3+n的和 ... python用递归求1到n的和 ... python编程求1到100的和 ... python递归欧几里得算法 ... 递归函数python例子 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网