我已被置于一个项目,其客户端前端是用VB 6编写的,确认!我正在尝试开发一个支持For ... Each语法的自定义集合类.在VB 6中这可能吗?或者我坚持使用带有计数器的For..Next来识别索引.
谢谢您的帮助!
我有一个字典regionspointcount,它将区域名称(str)作为键,并将该区域内的一种特征类型(int)作为值保存{'Highland':21}.
我想在枚举时迭代字典的键和值.有没有办法做这样的事情:
for i, k, v in enumerate(regionspointcount.items()):
Run Code Online (Sandbox Code Playgroud)
或者我是否必须使用计数变量?
let output_sorted: Vec<String> = four_digit_ouput
.iter()
.map(|tok| tok.chars().sorted().collect::<String>())
.collect();
let output = 0;
for (idx, digit) in output_sorted.enumerate() {
Run Code Online (Sandbox Code Playgroud)
当我尝试对字符串向量进行枚举 for 循环时,出现此错误:
let output_sorted: Vec<String> = four_digit_ouput
.iter()
.map(|tok| tok.chars().sorted().collect::<String>())
.collect();
let output = 0;
for (idx, digit) in output_sorted.enumerate() {
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?哪些特征边界不允许枚举?
在enumerate使用start指定的默认参数进行计时时,我注意到以下奇怪的行为:
In [23]: %timeit enumerate([1, 2, 3, 4])
The slowest run took 7.18 times longer than the fastest. This could mean that an intermediate result is being cached
1000000 loops, best of 3: 511 ns per loop
In [24]: %timeit enumerate([1, 2, 3, 4], start=0)
The slowest run took 12.45 times longer than the fastest. This could mean that an intermediate result is being cached
1000000 loops, best of 3: 1.22 µs per loop
Run Code Online (Sandbox Code Playgroud)
因此,对于start …
我有一个值列表,我想把它们放在一个字典中,将每个值映射到它的索引.
我可以这样做:
>>> t = (5,6,7)
>>> d = dict(zip(t, range(len(t))))
>>> d
{5: 0, 6: 1, 7: 2}
Run Code Online (Sandbox Code Playgroud)
这不错,但我正在寻找更优雅的东西.
我遇到过以下内容,但它与我需要的相反:
>>> d = dict(enumerate(t))
>>> d
{0: 5, 1: 6, 2: 7}
Run Code Online (Sandbox Code Playgroud)
请分享您的解决方案,
谢谢
编辑:Python 2.6.4
对于包含1000个元素的列表,dict(zip)版本是最快的,生成器和列表推导版本几乎完全相同,它们慢约1.5倍,功能映射(反向)相当慢.
$ python -mtimeit -s"t = range(int(1e3))""d = dict(zip(t,range(len(t))))"
1000循环,最佳3:277每循环usec
$ python -mtimeit -s"t = range(int(1e3))""d = dict([(y,x)代表x,y代表枚举(t)])"
1000循环,最佳3:426 usec per环
$ python -mtimeit -s"t = range(int(1e3))""d = dict((y,x)代表x,y代表枚举(t))"
1000循环,最佳3:437每循环usec
$ python -mtimeit -s"t = range(int(1e3))""d = dict(map(反向,枚举(t)))"
100循环,最佳3:3.66毫秒每循环
我尝试对较长的列表和较短的列表(1e2,1e4,1e5)运行相同的测试,并且每个循环的时间与列表的长度成线性比例.
有人可以时间py 2.7+版本吗?
C#中是否有一个函数返回IEnumerator无限的整数序列[0, 1, 2, 3, 4, 5 ...]?
我现在正在做
Enumerable.Range (0, 1000000000).Select (x => x * x).TakeWhile (x => (x <= limit))
Run Code Online (Sandbox Code Playgroud)
列举所有方块limit.我意识到这是有效的,但是如果有一个内置函数可以计算0,我宁愿使用它.
我正在尝试根据服务器上安装的MySQL版本在客户端计算机上安装驱动程序,为此,我想通过注册表项检查服务器上的版本.
也就是说,我需要枚举其中的子键HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB.在这一个下通常只有一个键,它通常是这样的形式:MySQL Server #.#,其中#代表一个数字.
但是因为我不知道它们是哪个值,有没有办法获取密钥然后我可以从名称中获取数字以确定要安装哪个驱动程序?我认为枚举子键是获取键的最佳方法,但也许一个聪明的字符串格式和循环也可以工作?
大家早上好,我有一个包含数千个不同深度子目录的文件夹.我需要列出所有不包含子目录的目录(众所周知的"行尾").如果它们包含文件就没问题.有没有办法用EnumerateDirectories做到这一点?
例如,如果返回完全递归的EnumerateDirectories:
/files/
/files/q
/files/q/1
/files/q/2
/files/q/2/examples
/files/7
/files/7/eb
/files/7/eb/s
/files/7/eb/s/t
Run Code Online (Sandbox Code Playgroud)
我只对以下内容感兴趣:
/files/q/1
/files/q/2/examples
/files/7/eb/s/t
Run Code Online (Sandbox Code Playgroud) 我想要一个行为类似的函数enumerate,但是在numpy数组上.
>>> list(enumerate("hello"))
[(0, "h"), (1, "e"), (2, "l"), (3, "l"), (4, "o")]
>>> for x, y, element in enumerate2(numpy.array([[i for i in "egg"] for j in range(3)])):
print(x, y, element)
0 0 e
1 0 g
2 0 g
0 1 e
1 1 g
2 1 g
0 2 e
1 2 g
2 2 g
Run Code Online (Sandbox Code Playgroud)
目前我正在使用此功能:
def enumerate2(np_array):
for y, row in enumerate(np_array):
for x, element in enumerate(row):
yield (x, y, element)
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点?例如内置函数(我找不到任何内容),或者以某种方式更快的不同定义.
如果我想枚举一个数组(比如说map()我需要将元素的索引与其值一起使用的enumerate()函数),我可以使用函数.例如:
import Foundation
let array: [Double] = [1, 2, 3, 4]
let powersArray = array.enumerate().map() {
pow($0.element, Double($0.index))
}
print("array == \(array)")
print("powersArray == \(powersArray)")
// array == [1.0, 2.0, 3.0, 4.0]
// powersArray == [1.0, 2.0, 9.0, 64.0] <- As expected
Run Code Online (Sandbox Code Playgroud)
现在,如果我想使用数组中的一些子序列,我可以使用a slice,它将允许我使用与我在原始数组中使用的相同的索引(这正是我想要的情况,如果我会subscript在for循环中使用访问器).例如:
let range = 1..<(array.count - 1)
let slice = array[range]
var powersSlice = [Double]()
for index in slice.indices {
powersSlice.append(pow(slice[index], Double(index)))
}
print("powersSlice == \(powersSlice)")
// powersSlice …Run Code Online (Sandbox Code Playgroud)