list()函数不会将字符串分成字符

时间:2014-07-22 22:22:33

标签: python

#!/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('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.')

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

这里要注意的最重要的事情是字符串本身是列表可迭代,一起收集字符。 list()所做的是将一个列表/ iterable中的每个元素放入另一个列表中。这对字符串的影响是制作包含该字符串的每个字符的另一个列表(因为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 :(得分:0)

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

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

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

答案 3 :(得分:0)

list在其构造函数中接受序列。您为myList分配了一个包含单个字符串元素的文字列表对象。当您调用list(myList)时,其参数已经是一个列表,因此提取一个元素并在新的列表对象中引用。当您使用字符串作为参数调用list时,它会将其解释为" listify"并按元素分隔它们 - 字符串中的各个字符。

答案 4 :(得分: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()'放在它周围。

相关问题