2016-11-29 80 views
0

当我尝试将一个字符串插入到一个数组,我得到['.','p','y']代替[.py]为什么我不在一个索引中获取字符串?

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方法需要迭代,并将迭代器的每个元素附加到自身。因此,它看起来是这样的:

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

由于Ex是一个字符串,它是一个迭代,从而通过上述过程进行。什么,你想做的事,而不是,是用.append方法,它只是增加了该元素添加到列表中,无论元素可以是:

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荷兰国际集团名单引起迭代器参数的每一个元素被附加单独:

L.extend(iterable) -> None - 通过从可迭代

l = []  
l.extend(".py") 
print(l) # ['.', 'p', 'y'] 
附加元件延伸列表10

您正在寻找.append需要该物品并将其置于列表末尾:

l = []  
l.append(".py") 
print(l) # ['.py'] 
相关问题