3

在 Python 中,如何传递一个只包含一个字符串的列表?

例如:

def fn(mylist): return len(mylist)
print fn(('abc', 'def')) # prints 2
print fn(('abc'))        # prints 3

我希望它为1列表中的一个字符串打印,('abc') 但它3为字符串的 3 个字符打印。

4

4 回答 4

8

那是一个元组,而不是一个列表。要制作一个元组,请执行以下操作:

print fn(('abc',))

要制作长度为 1 的列表,请执行以下操作:

print fn(['abc'])

在您的情况下,我认为列表会更合适。当你有一堆相同类型的相同元素时使用列表,当你有一个“记录”时使用元组,或者一些可能不同类型的元素,你不需要添加或删除任何条目。(列表通常包含元组。)

于 2013-04-26T00:43:23.333 回答
5
fn(['abc'])

通过列表

fn(('abc'))

在括号中传递一个被忽略的字符串。

正如其他海报指出的那样

 fn(('abc', ))

传递一个元组。

于 2013-04-26T00:43:18.113 回答
3

它们实际上称为元组,您可以创建一个长度为 1 的元组,如下所示:

print fn(('abc',)) 
于 2013-04-26T00:43:07.767 回答
2

当你使用('abc', 'def')它意味着你正在传递一个元组。具有单个元素的元组可以声明为('abc',).

*注意结尾的逗号

传递值('xyz') or 'xyz'是相同的。所以python函数len('string')返回字符数。另外,len(iteratable) 给出可迭代元素的计数。

因此,您应该使用 fn(['abc']) 或 fn(('abc',)) 来获得所需的答案。

于 2013-04-26T08:30:14.760 回答