将字符串转换为长度为1的列表

use*_*231 3 python string split list

我创建了一个需要列表才能正常工作的方法.但是,您可以发送一个列表或一个简单的字符串.我想将该字符串转换为包含整个字符串作为元素的列表.例如,如果我有:

"I am a string"
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

["I am a string"]
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

"I am a string".split("!@#$%^&*")
Run Code Online (Sandbox Code Playgroud)

因为我永远不会有符号组合,所以它总会将它转换为列表而不删除任何字符.但是,这似乎不是一种很好的方法.还有另外一种方法吗?

mat*_*yce 8

>>> "abc"
'abc'
>>> ["abc"]
['abc']
>>> abc = "abc"
>>> abc
'abc'
>>> [abc]
['abc']
>>> "I am a string".split("!@#$%^&*") == ["I am a string"]
True
Run Code Online (Sandbox Code Playgroud)

将值放在方括号中会生成包含一个项的列表,就像多个值生成包含多个项的列表一样.唯一不遵循此模式的容器是元组,因为圆括号也用于分组.在这种情况下,只需在单个项目后添加逗号:

>>> abc
'abc'
>>> (abc)
'abc'
>>> (abc,)
('abc',)
Run Code Online (Sandbox Code Playgroud)

如果您希望函数在封面下以不同方式处理列表和字符串,请将您的函数编码为:

def f(maybe_list):
    if not isinstance(maybe_list, list):
        maybe_list = [maybe_list]
    # carry on, you have a list.
Run Code Online (Sandbox Code Playgroud)

  • 我认为 OP 正在询问如何接受字符串或字符串列表作为参数 (2认同)