Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以在列表中更改外部变量?_Python_Python 2.7 - Fatal编程技术网

Python 是否可以在列表中更改外部变量?

Python 是否可以在列表中更改外部变量?,python,python-2.7,Python,Python 2.7,例如: n = 0 i = [n=n+1 for x in range(1,(12*8)+1) if x % 2 == 0] 这只是一个愚蠢的问题,我没有任何实际用途。我可以使用for或while循环来实现类似的功能。我只是想知道这是否可行。(假设不是哈哈。)不完全是。在Python中,表达式不能赋值,赋值也不能作为值。因此,代码会产生语法错误 如果您只对n感兴趣,您可以做什么: from collections import Counter n = Counter(True for x i

例如:

n = 0
i = [n=n+1 for x in range(1,(12*8)+1) if x % 2 == 0]

这只是一个愚蠢的问题,我没有任何实际用途。我可以使用for或while循环来实现类似的功能。我只是想知道这是否可行。(假设不是哈哈。)

不完全是。在Python中,表达式不能赋值,赋值也不能作为值。因此,代码会产生语法错误

如果您只对
n
感兴趣,您可以做什么:

from collections import Counter

n = Counter(True for x in range(1, (12*8)+1) if x % 2 == 0)[True]
如果您只是对
i
感兴趣,请使用@poke的答案:

i = []
[i.append(x) for x in range(1, (12*8)+1) if x % 2 == 0]
i
也就是说,表达不一定是没有副作用的。如果同时需要
i
n
,可以执行以下操作:

class Count:
    def __init__(self, value=0):
        self._value = value

    @property
    def incr(self):
        self._value += 1
        return self._value

    def __int__(self):
        return self._value

n = Count(0)
i = [n.incr for x in range(1, (12*8) + 1) if x % 2 == 0]
n = int(n)

不完全是。在Python中,表达式不能赋值,赋值也不能作为值。因此,代码会产生语法错误

如果您只对
n
感兴趣,您可以做什么:

from collections import Counter

n = Counter(True for x in range(1, (12*8)+1) if x % 2 == 0)[True]
如果您只是对
i
感兴趣,请使用@poke的答案:

i = []
[i.append(x) for x in range(1, (12*8)+1) if x % 2 == 0]
i
也就是说,表达不一定是没有副作用的。如果同时需要
i
n
,可以执行以下操作:

class Count:
    def __init__(self, value=0):
        self._value = value

    @property
    def incr(self):
        self._value += 1
        return self._value

    def __int__(self):
        return self._value

n = Count(0)
i = [n.incr for x in range(1, (12*8) + 1) if x % 2 == 0]
n = int(n)

不完全是。在Python中,表达式不能赋值,赋值也不能作为值。因此,代码会产生语法错误

如果您只对
n
感兴趣,您可以做什么:

from collections import Counter

n = Counter(True for x in range(1, (12*8)+1) if x % 2 == 0)[True]
如果您只是对
i
感兴趣,请使用@poke的答案:

i = []
[i.append(x) for x in range(1, (12*8)+1) if x % 2 == 0]
i
也就是说,表达不一定是没有副作用的。如果同时需要
i
n
,可以执行以下操作:

class Count:
    def __init__(self, value=0):
        self._value = value

    @property
    def incr(self):
        self._value += 1
        return self._value

    def __int__(self):
        return self._value

n = Count(0)
i = [n.incr for x in range(1, (12*8) + 1) if x % 2 == 0]
n = int(n)

不完全是。在Python中,表达式不能赋值,赋值也不能作为值。因此,代码会产生语法错误

如果您只对
n
感兴趣,您可以做什么:

from collections import Counter

n = Counter(True for x in range(1, (12*8)+1) if x % 2 == 0)[True]
如果您只是对
i
感兴趣,请使用@poke的答案:

i = []
[i.append(x) for x in range(1, (12*8)+1) if x % 2 == 0]
i
也就是说,表达不一定是没有副作用的。如果同时需要
i
n
,可以执行以下操作:

class Count:
    def __init__(self, value=0):
        self._value = value

    @property
    def incr(self):
        self._value += 1
        return self._value

    def __int__(self):
        return self._value

n = Count(0)
i = [n.incr for x in range(1, (12*8) + 1) if x % 2 == 0]
n = int(n)

不能在列表正文中进行赋值。语言规范仅允许。但是,这意味着您可以调用具有副作用的方法。例如,您可以调用
list.append
来修改不同的列表,例如

>>> lst = []
>>> [lst.append(i) for i in range(5)]
[None, None, None, None, None]
>>> lst
[0, 1, 2, 3, 4]

但这很少有用,而且大多数情况下会以一个更令人困惑的表达结束。更推荐的做法是将其拆分为一个标准for循环;这也避免了生成列表的开销。

您不能在列表正文中进行赋值。语言规范仅允许。但是,这意味着您可以调用具有副作用的方法。例如,您可以调用
list.append
来修改不同的列表,例如

>>> lst = []
>>> [lst.append(i) for i in range(5)]
[None, None, None, None, None]
>>> lst
[0, 1, 2, 3, 4]

但这很少有用,而且大多数情况下会以一个更令人困惑的表达结束。更推荐的做法是将其拆分为一个标准for循环;这也避免了生成列表的开销。

您不能在列表正文中进行赋值。语言规范仅允许。但是,这意味着您可以调用具有副作用的方法。例如,您可以调用
list.append
来修改不同的列表,例如

>>> lst = []
>>> [lst.append(i) for i in range(5)]
[None, None, None, None, None]
>>> lst
[0, 1, 2, 3, 4]

但这很少有用,而且大多数情况下会以一个更令人困惑的表达结束。更推荐的做法是将其拆分为一个标准for循环;这也避免了生成列表的开销。

您不能在列表正文中进行赋值。语言规范仅允许。但是,这意味着您可以调用具有副作用的方法。例如,您可以调用
list.append
来修改不同的列表,例如

>>> lst = []
>>> [lst.append(i) for i in range(5)]
[None, None, None, None, None]
>>> lst
[0, 1, 2, 3, 4]

但这很少有用,而且大多数情况下会以一个更令人困惑的表达结束。更推荐的做法是将其拆分为一个标准for循环;这也避免了生成列表的开销。

我来晚了,但我遇到了一个类似的编码问题(在O(n)中从另一个数组中获取一个最大子数组,因此我希望新数组和它的总数在一个过程中同时出现,而不是使用sum),您可以通过定义一个自定义函数:

n = 0
def inc_n(x):
  global n
  n += 1
  return x

i = [inc_n(x) for x in range(1,(12*8)+1) if x % 2 == 0]

我参加聚会已经很晚了,但我遇到了一个类似的编码问题(在O(n)中从另一个数组中获取一个max子数组,所以我希望新数组和它的总数都在一次传递中,而不是使用sum),您可以通过定义一个自定义函数:

n = 0
def inc_n(x):
  global n
  n += 1
  return x

i = [inc_n(x) for x in range(1,(12*8)+1) if x % 2 == 0]

我参加聚会已经很晚了,但我遇到了一个类似的编码问题(在O(n)中从另一个数组中获取一个max子数组,所以我希望新数组和它的总数都在一次传递中,而不是使用sum),您可以通过定义一个自定义函数:

n = 0
def inc_n(x):
  global n
  n += 1
  return x

i = [inc_n(x) for x in range(1,(12*8)+1) if x % 2 == 0]

我参加聚会已经很晚了,但我遇到了一个类似的编码问题(在O(n)中从另一个数组中获取一个max子数组,所以我希望新数组和它的总数都在一次传递中,而不是使用sum),您可以通过定义一个自定义函数:

n = 0
def inc_n(x):
  global n
  n += 1
  return x

i = [inc_n(x) for x in range(1,(12*8)+1) if x % 2 == 0]

预期的输出是什么。。。。我有点困惑……你试过了吗?它出错了吗?他的范围表达式很难举例说明,但我假设(将其替换为
range(1,5)
),OP希望
I
为[1,2,3,4];和
n
为4。预期的输出是什么。。。。我有点困惑……你试过了吗?它出错了吗?他的范围表达式很难举例说明,但我假设(将其替换为
range(1,5)
),OP希望
I
为[1,2,3,4];和
n
为4。预期的输出是什么。。。。我有点困惑……你试过了吗?它出错了吗?他的范围表达式很难举例说明,但我假设(将其替换为
range(1,5)
),OP希望
I
为[1,2,3,4];和
n
为4。预期的输出是什么。。。。我有点困惑……你试过了吗?它出错了吗?他的范围表达式很难举例说明,但我假设(将其替换为
range(1,5)
),OP希望
I
为[1,2,3]