标签: enumerate

Python联合枚举多个变量

所以我想同时迭代两个列表,并且我还需要索引,如以下代码所示。两者对我来说都很简单,但是在第二种情况下是否也可以使用枚举?当然,假设两个 var 数组的长度相同。

import numpy as np

def _eqn(y, variables, sign=-1.0):
    f = 0
    for i,x in enumerate(variables):
        f += x/(1+0.06)**(i+1)
    return float(sign*(y + f))


_eqn(1,np.array([1,1]))

def _eqn2(y, vars1, vars2, sign=-1.0):
    f = 0
    n = len(vars1)
    for x,y,i in zip(vars1, vars2, range(n)):
        f += (x+y)/(1+0.06)**(i+1)
    return float(sign*(y + f))


_eqn2(1,np.array([1,1]),np.array([1,1]))
Run Code Online (Sandbox Code Playgroud)

python loops enumerate

1
推荐指数
1
解决办法
3873
查看次数

Cocoa - 枚举可变数组,删除对象

我有一个可变数组,其中包含可变字典,其中包含键的纬度,经度和id的字符串.一些纬度和经度值是相同的,我想从数组中删除重复项,所以我每个位置只有一个对象.

我可以枚举我的数组并使用第二个枚举查看每个对象来查找具有不同ID但具有相同纬度和经度的对象,但是如果我尝试删除该对象,我将在枚举期间静音该数组.

有没有办法在枚举时从数组中删除对象,所以我只在数组更新时枚举当前的对象集?

希望这个问题有道理.

谢谢,豪伊

cocoa enumerate duplicates nsmutablearray

0
推荐指数
1
解决办法
1008
查看次数

在Python中迭代遍历列表的麻烦

在python中,我有一个名为"list"的列表,如下所示:

[{'lastname': 'lname1', 'firstname': 'fname1', 'shortname': 'SN1'},
{'lastname': 'lname2', 'firstname': 'fname2', 'shortname': 'SN2'},
{'lastname': 'lname3', 'firstname': 'fname3', 'shortname': 'SN3'}]
Run Code Online (Sandbox Code Playgroud)

对于列表中的EACH项,我需要能够访问这些属性中的每一个.所以我必须得到每个用户的姓氏,每个用户的名字等

由于这是一个列表,我一直在尝试如下:

for idx in enumerate(list):
        print(list[idx])
Run Code Online (Sandbox Code Playgroud)

但是我得到一个错误,说列表索引必须是整数,而不是元组.

试试这个:

for idx in enumerate(list):
        print(idx)
Run Code Online (Sandbox Code Playgroud)

我得到这样的输出:

(0, {'lastname': 'lname1', 'firstname': 'fname1', 'shortname': 'SN1'})
(1, {'lastname': 'lname2', 'firstname': 'fname2', 'shortname': 'SN2'})
(2, {'lastname': 'lname3', 'firstname': 'fname3', 'shortname': 'SN3'})
Run Code Online (Sandbox Code Playgroud)

我想要的就是能够得到索引,所以我可以遍历每个列表项并说出来

firstname = list[idx]["firstname"]
lastname = list[idx]["lastname"]
Run Code Online (Sandbox Code Playgroud)

等等.

注意:如果我说的话

print(list[0]["firstname"]) 
Run Code Online (Sandbox Code Playgroud)

它完美地运作.

我究竟做错了什么?或者我需要做什么?谢谢!

python json loops list enumerate

0
推荐指数
1
解决办法
156
查看次数

在运行时枚举类型的所有实例?

解决了.

我想知道是否有人知道在运行时是否可以获取特定类型的所有实例化类型?

假设我想枚举Foo类型的所有实例化对象.

public class Foo {}

var foo1 = new Foo();
Foo foo2 = new Foo();

IEnumerable<Foo> foos = GetObjects<Foo>(); 
//foos should contain foo1 and foo2
Run Code Online (Sandbox Code Playgroud)

如果没有这样做的直接方式,那么我可以创建一个基础类型,在构造上将其自身订阅到某个静态服务,然后以那种方式查找...但我觉得这必须已经实施GC以实现.


如果可以的话,我会给大多数人正确答案,但是因为我不能把它交给第一个回答的人.

c# reflection enumerate

0
推荐指数
1
解决办法
120
查看次数

列出python中的理解行为

我正在与Codeskulptor合作解决岩石碰撞问题.我想检查岩石之间的碰撞,我的岩石列在清单中.我想出了构建组合列表然后检查碰撞的解决方案.我没有itertools可用.我的组合列表是这样创建的:

def combinations(items):
    n_items = [(n,item) for n,item in enumerate(items)]
    return [(item,item2) for n,item in n_items for m,item2 in n_items[n:] if n != m]

letters = ['A','B','C','D']
print combinations(letters)

[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')] 
Run Code Online (Sandbox Code Playgroud)

结果还可以.

在尝试使用函数之前,我尝试在一个衬里中执行此操作:

def combinations2(items):
    return [(item,item2) for n,item in enumerate(items) for m,item2 in enumerate(items[n:]) if n != m]

letters = ['A','B','C','D']
print combinations2(letters)
Run Code Online (Sandbox Code Playgroud)

但结果是完全不同和错误的:

[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'B'), ('B', 'D'), ('C', 'C'), ('C', 'D'), ('D', …
Run Code Online (Sandbox Code Playgroud)

python list-comprehension enumerate

0
推荐指数
1
解决办法
102
查看次数

python - 获取文件中的目标行等,然后得到一个特定的前一行?

我需要在某些输出中找到某一行.我可以这样做,但是在找到输出的正确部分之后,我需要在那之前提取某些行.

for i, line in enumerate(lines):
 target = str(self.ma3) # set target string
 if target in line:
  print i, line     # this gets the correct line, I can stick it in a variable and do stuff with it
  i = i - 4         # now I want the line 4 lines before the initial target line
  print lines[i]    # doesn't work, gives error: TypeError: 'generator' object has no attribute '__getitem__'
Run Code Online (Sandbox Code Playgroud)

如果有人知道如何做到这一点,将不胜感激!

python string enumerate readlines

0
推荐指数
1
解决办法
536
查看次数

通过列举列表的枚举来理解reduce

我试图将第一个列表的第一个数字1,第二个列表的第二个数字,5等相乘,以获得列表列表.例如,对于[[1,2,3],[4,5,6],[7,8,9]],我想获得1*5*9.

虽然有很多可能的方法可以做到这一点,但我想知道如何使用枚举进行reduce:

def test(m):
    return reduce(lambda a, b: a[1][a[0]]*b[1][b[0]], enumerate(m))

print test([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
Run Code Online (Sandbox Code Playgroud)

我认为a在开头是(0,[1,2,3])所以a [1]是[1,2,3],a [0]是0,所以a [1] [a [0]]是1.

但是,我得到以下异常:

return reduce(lambda a, b: a[1][a[0]]*b[1][b[0]], enumerate(mat))
TypeError: 'int' object has no attribute '__getitem__'
Run Code Online (Sandbox Code Playgroud)

为什么是a整数?

python reduce list enumerate

0
推荐指数
1
解决办法
872
查看次数

C#枚举对象foreach

我有一个简化版本,我想在下面做.我有一个由SolarSystem类使用的类Planet.我想使用foreach循环为SolarSystem中的每个Planet编写orbitTimeInDays.

错误CS1579 foreach语句无法对"TestEnum.SolarSystem"类型的变量进行操作,因为"TestEnum.SolarSystem"不包含"GetEnumerator"的公共定义

问题是枚举,我已经阅读了几篇关于使对象可枚举的文章和问题,但我似乎无法弄清楚如何将它应用于SolarSystem,因此我可以检查它构造的每个星球.(最终它也将包含小行星等,所以它不仅仅是8个行星和冥王星.)

有人可以帮我理解如何枚举SolarSystem.

class Program
{
    static void Main(string[] args)
    {
        SolarSystem solarSystem = new SolarSystem();
        solarSystem.mercury.orbitTimeInDays = 88;
        solarSystem.venus.orbitTimeInDays = 225;
        // etc...

        foreach (Planet planet in solarSystem)
        {
            Console.WriteLine("Time taken to orbit sun (in days) : " + planet.orbitTimeInDays.ToString());
        }
    }
}

public class Planet 
{
    public double distanceFromEarth { get; set; }
    public int orbitTimeInDays { get; set; }
    // etc...

    public Planet() { }
}

public class SolarSystem 
{ 
    public Planet mercury { get; …
Run Code Online (Sandbox Code Playgroud)

c# foreach enumeration enumerate

0
推荐指数
1
解决办法
555
查看次数

如何从单独的列表中添加/求和值

我有一个单个数字列表,我想要总结.

我从这开始:

d3 = [9,9,9,8]
d4 = [3,6,np.nan,10]

for i,j in enumerate(d3):
    add = [(d3[i]-d4[i])**2]
Run Code Online (Sandbox Code Playgroud)

当我执行上面的代码时,我得到以下列表:

[36]
[9]
[nan]
[4]
Run Code Online (Sandbox Code Playgroud)

但是,我想要这些数字的SUM,而忽略NaN(所需的输出是36 + 9 + 4):

python numpy list enumerate

0
推荐指数
1
解决办法
98
查看次数

Python3:枚举函数中的start参数如何工作?

我有一个清单。我想从中处理列表中的项目variable starting point

lines = ["line 0", ..., "line 25", ...]
cursor = 25

for i, line in enumerate(lines, start=cursor):
    print("cursor is at:", cursor)
    print("start line is:", lines[cursor])
    print("actual line is:", line)
Run Code Online (Sandbox Code Playgroud)

输出:

cursor is at: 25
start line is: line 25
actual line is: line 0
...
Run Code Online (Sandbox Code Playgroud)

我希望enumeratecursor这里开始,但是它从开始0


我敢肯定我误解了一些东西,但是我真的很想了解如何enumerate改进我的Python。

python list enumerate python-3.x

0
推荐指数
1
解决办法
88
查看次数