2016-11-29 3 views
0

私は['.','p','y']代わりの[.py]を取得し、配列に文字列を挿入しよう:なぜ私は1つのインデックスに文字列を取得しないのですか?

from os import walk 
Typofiles=[] 
t="" 
Ex="" 
f = [] 
for (dirpath, dirnames, filenames) in walk('D:\Python_Scripts'): 
    f.extend(filenames) 
for i in range(1): 
    t = f[i] 
    indexO=t.rindex('.') 
    LenF=len(t) 
    Ex=(t[-(LenF-indexO):]) 
    if Ex in Typofiles: 
     pass 
    else: 
     Typofiles.extend(Ex) 

print (Typofiles) 
print(Ex) 

結果は次のとおりです。['.','p','y']は、どのように私は['.py']を得ることができますか?

答えて

1

これは、Typofilesがリストであり、.extendメソッドを使用しているために発生します。リストの.extendメソッドはiterableを取り、iterableの各要素をそれ自身に追加します。したがって、それはこのようなものになります。Exが文字列であるので

class List: 
    def extend(self, iterable): 
     for elem in iterable: 
      self.append(elem) 

を、それが反復可能であるため、上記のプロセスを経ます。

In [19]: L = [] 

In [20]: L.extend('.py') 

In [21]: L 
Out[21]: ['.', 'p', 'y'] 

In [22]: L = [] 

In [23]: L.append('.py') 

In [24]: L 
Out[24]: ['.py'] 
1

extendリストをINGのことは反復可能な引数内のすべての要素が追加されますので:あなたの代わりに何をしたいのか、要素が何であれ、単にリストに要素を追加.append方法を、使用しています別途:

L.extend(iterable) -> None - 反復可能

l = []  
l.extend(".py") 
print(l) # ['.', 'p', 'y'] 
から要素を追加してリストを拡張10

.appendは、オブジェクトを受け取り、単にリストの最後に配置します。

l = []  
l.append(".py") 
print(l) # ['.py'] 
関連する問題