为什么*在python中声明变量之前使用

时间:2017-07-12 15:48:37

标签: python python-3.x

我刚开始学习python。我正在按照一个例子说明他们在声明变量之前使用了*。我的问题是使用它的目的是什么。 例如,我正在关注

for i in range(n):
  name, *l = input().split()
  s = list(map(float, l))
  a[name] = s

打印变量后,我得到一个由a做的字典。但无法理解为什么*在l变量之前使用

1 个答案:

答案 0 :(得分:4)

这是在python 3中引入的一个新的解包功能,称为星形解包或extended iterable unpacking

当你做

name, *l = input().split()

split的结果分为两部分:

  • name获取列表的第一个元素
  • l获取列表的其余部分(浮动)

所以假设你有这样的一行:

name 0.0 1.0 2.0 3.0

splitname设置为"name"l设置为["0.0", "1.0", "2.0", "3.0"]llist(map(float ...转换为浮动列表name

然后a = {name:list(map(float,l)) for name, *l in (input().split() for _ in range(n))} 用作键,浮点列表用作值。

除此之外:你的循环可以用下面的字典理解来概括:

export const getRequest =  (a) => (dispatch) =>{
return axios.get(a)
    .then(function (response) {
        dispatch({
            type: FETCH_DATA,
            payload: response.data
        });
    })
    .catch(function (error) {
        dispatch({type: ERROR_DATA, payload: {status : error.response.status, statusText : error.response.statusText }});
    });
};