我有一个ASP.NET(C#)网页,我想在代码渲染块中枚举一个字典:
<% foreach (Dictionary<string, string> record in parsedData) { %>
<div>...Some HTML Code...</div>
<% } %>
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误:
编译器错误消息:CS0246:找不到类型或命名空间名称"Dictionary"(您是否缺少using指令或程序集引用?)
如何将System.Collections.Generic导入页面本身?这是我的页面指令:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCSharpClass.aspx.cs" Inherits="_MyCSharpClass" %>
Run Code Online (Sandbox Code Playgroud) 我正在尝试枚举COM端口的"友好名称".随着USB串行设备在运行时连接和断开,端口可能会动态变化.
基于此问题中描述的可能方法,我尝试使用SetupDiGetClassDevs方法.
我找到了这个示例代码,但它是为旧版本的setupapi单元编写的(homepages.borland.com的原始链接当然不起作用).
我尝试使用当前JVCL(JVCL340CompleteJCL221-Build3845)中的setupapi单元,但它似乎与Delphi 7不兼容.我收到编译器错误:
if SetupDiGetDeviceRegistryProperty(DevInfoHandle,DeviceInfoData,
RegProperty,
@PropertyRegDataType,
@S1[1],RequiredSize,@RequiredSize) then begin
Run Code Online (Sandbox Code Playgroud)
在函数SetupDiGetDeviceRegistryProperty的调用中,我在参数@PropertyRegDataType和@RequiredSize上得到错误"实际和形式参数的类型必须相同" .
Delphi3000站点说该代码是在2004年编写的,适用于Delphi 7,所以我不知道为什么它现在不适用于Delphi 7,除非setupapi已经改变.是否有人熟悉setupapi可能导致这些问题的更改?
我正在测试一个简单的控制台程序.uses语句是"windows,sysutils,classes,setupAPI,Registry;"
主要计划是:
begin
ComPortStringList := SetupEnumAvailableComPorts;
for Index := 0 to ComPortStringList.Count - 1 do
writeln(ComPortStringList[Index]);
end;
end.
Run Code Online (Sandbox Code Playgroud) 我想在Python中迭代+枚举两个列表.以下代码看起来很丑陋.有没有更好的解决方案?
for id, elements in enumerate(itertools.izip(as, bs)):
a = elements[0]
b = elements[1]
# do something with id, a and b
Run Code Online (Sandbox Code Playgroud)
谢谢.
我希望能够yield使用可变数量的项目,这些项目将允许生成类似于以下内容的生成器函数:
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
def multi_enumerate(*iterables):
n = 0
iterators = map(iter, iterables)
while iterators:
yield n, *tuple(map(next, iterators)) # invalid syntax
n += 1
for i,a,b,c in multi_enumerate(x, y, z):
print i,a,b,c
Run Code Online (Sandbox Code Playgroud)
有人知道某种方法吗?我知道我可以产生一个元组,但这需要在接收端明确地解压缩它,例如:a,b,c = t[0], t[1], t[2].
最终解决方案:
FWIW,这是我最终使用的,基于John Kugelman的出色答案:
from itertools import izip
def multi_enumerate(*iterables, **kwds):
start = kwds.get('start')
if start is None:
if kwds: raise TypeError(
"multi_enumerate() accepts only the …Run Code Online (Sandbox Code Playgroud) 我对以下行为感到惊讶:
>>> a=['a','b','c','d','e','f','g']
>>> en=enumerate(a)
>>> list(en)
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f'), (6, 'g')]
>>> list(en)
[]
>>> # en changed? let's try that again!
>>> a=['a','b','c','d','e','f','g']
>>> en=enumerate(a)
>>> tuple(en)
((0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f'), (6, 'g'))
>>> tuple(en)
()
>>> # en changes again?
Run Code Online (Sandbox Code Playgroud)
我假设list()只是从en中的数据构建一个列表,并且不会以任何方式改变它.同样的tuple().但他们都以"深刻"的方式影响恩.我误解一些关于list()和tuple(),或我误解enumerate()?谢谢.
我有两个清单:
wordlist = ['A', 'Aani', 'Aaron', 'Aaronic',
'Aaronical', 'Aaronite', 'Aaronitic',
'Aaru', 'Ab', 'Ababdeh']
Run Code Online (Sandbox Code Playgroud)
和
wordlist_compound = [['A','0'], ['Aaronic','1'], ['Key','2'],
['Aaronical','3'], ['Aaronite','4'], ['Yes','5']]
Run Code Online (Sandbox Code Playgroud)
我想取两个单词的交集,并在第三个列表中创建一个包含单词,数字组合编号的列表wordlist_final,以便wordlist_final看起来像:
[['A','0'], ['Aaronic','1'], ['Aaronical','3'], ['Aaronite','4']]
Run Code Online (Sandbox Code Playgroud)
我目前的代码如下:
wordlist_final = []
for index, word in enumerate(wordlist):
for word_comp in wordlist_compound:
if word[index] == wordlist_compound[index][0]:
wordlist_final.append(wordlist_compound[index])
Run Code Online (Sandbox Code Playgroud)
但我得到一个"字符串索引超出范围错误"
我正在阅读python cookbook,它提到enumerate()返回一个迭代器,产生表单的所有对(两个-itm元组)(index,item)
我可以使用d = dict(枚举(L))来制作一个词典.
根据我的理解,我认为enumerate()返回一个元组.并且dict()可以将元组变成dict.
所以我尝试过:
dict((1,2))
Run Code Online (Sandbox Code Playgroud)
弹出TypeError.
所以我想知道枚举什么对象实际上返回哪个dict()可以使它成为一个字典?
我试图在groovy中使用类似python enumerate()方法的东西.
例如:
list = ['book','pencil','laptop','coffee']
for product, line in enumerate(list, 1):
print "Product %s in the %sth line" % (product, line)
Run Code Online (Sandbox Code Playgroud)
输出应该是:
第1行中的产品书第2行中的
产品铅笔
第3行中的产品笔记本第4行中的
产品咖啡
有没有办法在groovy中执行枚举方法?
问候!
我有一个元组列表,想要创建一个新列表。用新列表的最后一个元素(第一个元素为0)和旧列表的下一个元组的第二个元素来计算新列表的元素。
为了更好地理解:
list_of_tuples = [(3, 4), (5, 2), (9, 1)] # old list
new_list = [0]
for i, (a, b) in enumerate(list_of_tuples):
new_list.append(new_list[i] + b)
Run Code Online (Sandbox Code Playgroud)
因此,这是解决方案,但是不必计算新列表的最后一个元素。因此,不需要最后一个元素。
有没有创建新列表的好方法?到目前为止,我的解决方案是使用范围,但看起来不太好:
for i in range(len(list_of_tuples)-1):
new_list.append(new_list[i] + list_of_tuples[i][1])
Run Code Online (Sandbox Code Playgroud)
我是python的新手,因此不胜感激。
默认情况下,enumerate()从0开始计数,但如果你给它一个第二个整数参数,它将从该数字开始,但我们如何从count和elem的特定值枚举.例如,我们希望将计数传递为'2',将elem传递为'bar'.两个值都必须传递给枚举函数.
elements = ('foo', 'bar', 'baz')
for count, elem in enumerate(elements):
print (count, elem)
Run Code Online (Sandbox Code Playgroud) enumerate ×10
python ×7
list ×3
tuples ×2
asp.net ×1
c# ×1
delphi ×1
dictionary ×1
enumeration ×1
generator ×1
groovy ×1
import ×1
intersection ×1
loops ×1
python-3.x ×1
serial-port ×1