在Python中将变量长度字符串拆分为变量的最佳方法是什么?

时间:2012-07-03 14:36:10

标签: python

假设我有一个由可变长度的逗号分隔的整数字符串。拆分字符串并将整数存储到变量中的最佳方法是什么?

目前,我有以下内容。

input = sys.argv[1]
mylist = [int(x) for x in input.split(',')]
if len(mylist) == 2: a, b = mylist
else: a, b, c = mylist

有更有效的方法吗?

2 个答案:

答案 0 :(得分:8)

添加标记,然后将列表限制为3个元素:

a, b, c = (mylist + [None] * 3)[:3]

现在a,b和c至少设置为None,如果项目数超过3,则仅使用前三个值。

演示:

>>> mylist = [1, 2]
>>> a, b, c = (mylist + [None] * 3)[:3]
>>> print a, b, c
1 2 None
>>> mylist = [1, 2, 3, 4]
>>> a, b, c = (mylist + [None] * 3)[:3]
>>> print a, b, c
1 2 3

如果您需要至少2个元素,请使用更少的None值并捕获ValueError:

try:
    a, b, c = (mylist + [None])[:3]
except ValueError:
    print "You mast specify at least 2 values"
    sys.exit(1)

答案 1 :(得分:0)

只是Martjin的附录。把它变成一个函数来说明你可能使用它的原因。你可以使用

做动态哨兵
def store(mylist,expsiz = 10, dflt = None):
    return mylist + [dflt]*(expsiz-len(mylist))

>>> mylist = [1,2,5]
>>> fixedlen = store(mylist)
>>> print fixedlen
[1,2,5,None,None,None,None,None,None,None]