2014-07-22 44 views
-1
#!/usr/bin/python 

def map(): 
    myList = ['g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle    gr gl    zw fylb gq glcddgagclr ylb rfyr\'q ufw rfgq  rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb.   lmu ynnjw ml rfc spj.'] 
    list(myList) 
    print(myList) 

为什么list()函数不会将列表分隔成字符?但是,如果我把这种方式,然后它的工作原理:list()函数不会将字符串分隔成字符

list('g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle    gr gl   zw fylb gq glcddgagclr ylb rfyr\'q ufw rfgq  rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb.   lmu ynnjw ml rfc spj.') 
+3

因为你给它一个单元素列表来迭代。你为什么要用list参数调用list?另外,不要调用你自己的函数'map';这是一个内置函数。 – jonrsharpe

+0

对于'myList'它具有'list([[char]]的类型''而你的第二个例子是'list([char])'。 – Lucas

回答

0

这里要注意的最重要的事情是字符串,本身名单 iterables,收集characterstogether。 list()所做的就是将一个列表/迭代中的每个元素都放到另一个列表中。这对字符串的影响是让另一个列表包含该字符串的每个字符(因为list()不会将所有这些字符重新组合为一个字符串)。

但是,在您的第一行中,您没有给它一个字符串,而是给它一个包含字符串的列表。 list()将查看输入,请参阅第一个项目是整个字符串,然后将整个字符串移动到另一个列表。这就是为什么它不会分裂。如果你改为:

myList = 'g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle    gr gl    zw fylb gq glcddgagclr ylb rfyr\'q ufw rfgq  rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb.   lmu ynnjw ml rfc spj.' 

然后你会得到你期望的行为。

+2

字符串不是列表。字符串虽然可迭代。列表采用可迭代的参数。 – Gerrat

+0

@Gerrat哎呀,修好了。谢谢。 – TheSoundDefense

0

函数list()只有在从参数中创建列表时才会深入一层。

当您向其传递一个包含一个元素的列表时,它将使用一个元素观察该列表,并将该列表放入一个新列表中。

当你传递一个字符串时,它会观察一个字符列表并将每个字符放到一个新列表中。

2

myList是一个可迭代的,因此列表构造函数将迭代列表中的元素。在你的情况下,列表中有一个字符串。当您声明myList以获得您期望的行为时,丢弃方括号。

0

list在其构造函数中接受序列。您将myList分配给包含单个字符串元素的文字列表对象。当你调用list(myList)时,它的参数已经是一个列表,所以一个元素被提取并引用到一个新的列表对象中。当你用一个字符串作为参数调用list时,它会将它解释为它的序列以“校正”并将它们按元素分隔 - 字符串中的单个字符。

0

我会尝试分割它们。


def map(): 
    myList = ['g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle    gr gl    zw fylb gq glcddgagclr ylb rfyr\'q ufw rfgq  rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb.   lmu ynnjw ml rfc spj.'] 
    print list(myList[0].split()) 

myList [0]访问列表的第一个元素,它是整个字符串。 split()然后基本上将它们分解成字符。我认为它已经以列表的形式返回了,但为了确保它是一个列表,只需将'list()'放在它的周围。