所以我想同时迭代两个列表,并且我还需要索引,如以下代码所示。两者对我来说都很简单,但是在第二种情况下是否也可以使用枚举?当然,假设两个 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) 我有一个可变数组,其中包含可变字典,其中包含键的纬度,经度和id的字符串.一些纬度和经度值是相同的,我想从数组中删除重复项,所以我每个位置只有一个对象.
我可以枚举我的数组并使用第二个枚举查看每个对象来查找具有不同ID但具有相同纬度和经度的对象,但是如果我尝试删除该对象,我将在枚举期间静音该数组.
有没有办法在枚举时从数组中删除对象,所以我只在数组更新时枚举当前的对象集?
希望这个问题有道理.
谢谢,豪伊
在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)
它完美地运作.
我究竟做错了什么?或者我需要做什么?谢谢!
解决了.
我想知道是否有人知道在运行时是否可以获取特定类型的所有实例化类型?
假设我想枚举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以实现.
如果可以的话,我会给大多数人正确答案,但是因为我不能把它交给第一个回答的人.
我正在与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) 我需要在某些输出中找到某一行.我可以这样做,但是在找到输出的正确部分之后,我需要在那之前提取某些行.
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)
如果有人知道如何做到这一点,将不胜感激!
我试图将第一个列表的第一个数字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整数?
我有一个简化版本,我想在下面做.我有一个由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) 我有一个单个数字列表,我想要总结.
我从这开始:
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):
我有一个清单。我想从中处理列表中的项目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)
我希望enumerate从cursor这里开始,但是它从开始0。
我敢肯定我误解了一些东西,但是我真的很想了解如何enumerate改进我的Python。
enumerate ×10
python ×7
list ×4
c# ×2
loops ×2
cocoa ×1
duplicates ×1
enumeration ×1
foreach ×1
json ×1
numpy ×1
python-3.x ×1
readlines ×1
reduce ×1
reflection ×1
string ×1