【问题标题】:Assign variables to the list elements, without knowing it's length将变量分配给列表元素,而不知道它的长度
【发布时间】:2012-10-08 17:03:49
【问题描述】:

不确定如何正确形成,但问题与写入新行的shapefile(python库)函数有关,该函数需要写入变量.. 根据我的数据,我正在创建一个列表,我认为我可以将其转换为元组并解决我的问题,但是不……我没那么容易……

函数问这个: w.record(a, b, c, d....)w.record('a', 256, 25.2444, 'd'....) 我的数据在一个列表中,但列表长度不知道我的默认值,它取决于输入数据的形式,正确的长度很重要!

我也可以写w.record(list[0], list[1]...list[len(list)-1]),但是我必须自动创建它,不知道该怎么做。

顺便说一句,我使用的是旧的 python:2.5...(不是我的选择)

【问题讨论】:

  • 我不确定我是否正确理解了您的问题;但是我 Python 支持 arbitrary argument lists 的函数,这是你需要的吗?

标签: python list variable-assignment


【解决方案1】:

函数声明中有4种argument:-

  • 位置参数
  • 默认参数(或关键字参数 - 形式为:-a = 5
  • 非关键字参数
  • 关键字参数(或字典类型关键字参数)

一个典型的函数声明是这样的:-

func(positional_args, keyword_args,
                     *tuple_grp_nonkw_args, **dict_grp_kw_args)

你需要non-keyword参数,它需要额外的参数并将它们存储为tuple

w.record(*yourvalues)

类似于keyword 参数,将dictionary 作为输入。它们用**kwarg 表示。

  • 非关键字参数之后的所有关键字参数都进入**kwarg
  • 并且非关键字参数之前的所有关键字参数都是默认参数

对于 E.G:-

// nkwarg takes a list
// kwarg takes a dictionary
def foo(arg, defaultarg = 5, *nkwarg, **kwarg):
    print arg
    print defaultarg
    print nkwarg
    print kwarg


foo("hello", ["how", "are", "you"], a = 3, b = 4)

输出:-

hello
5
(['how', 'are', 'you'],)
{'a': 3, 'b': 4}

【讨论】:

  • 但如果我有一个列表:l=['Mok', 'Union_80vH_50vH', 13867, 32, '11:20:13.077', '523.343', '29.1', '29.09.2012 ', '13:17:02.077', '11:19:58.077', 1, 35, '90', '523.343', 1348917598],怎么样?
  • @najuste 它将存储在*nkwarg* 标记用于使参数采用任意数量的值。基本上它需要一个可变长度的列表。
  • 谢谢,不知道 * 东西(新手)。但是,如果我通过一个列表,结果我再次得到一个列表。好吧,我可以使用 w.record(foo(*list)) 的一种查找,但那是再次发生在两个括号中,因此不起作用。 。 我得到了它!!对不起,我只是测试错误.. uf..
【解决方案2】:
def foo(hello, *args):
 print hello

 for each in args:
     print each

if __name__ == '__main__':
 foo("LOVE", ["lol", "lololol"])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-05
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多