小编Sky*_*nel的帖子

Python:复制列表中的列表

希望有人可以帮助我.

我是Python的新手,我正在努力弄清楚我做错了什么.

我已经搜索并发现Python变量可以链接,以便更改一个更改另一个,并且我已经使用该id()函数进行了大量测试以掌握这个概念.但我似乎找到了一个例外,我希望有人可以解释......

首先,以下工作按预期方式制作列表的独立副本.

>>> a = [0,0]
>>> b = a[:]
>>> print a is b
False
>>> b[0]=1
>>> print a
[0,0]
>>> print b
[1,0]
Run Code Online (Sandbox Code Playgroud)

但是,如果我稍微改变这一点,那么a列表中的列表就会改变......

>>> a = [[0,0],[0,0]]
>>> b = a[:]
>>> print a is b
False
>>> b[0][0]=1
>>> print a
[[1, 0], [0, 0]]
>>> print b
[[1, 0], [0, 0]]
Run Code Online (Sandbox Code Playgroud)

现在我们看到任何更新b也将适用于a,但是print a is b返回的结果False?我也反对检查这一点id(),一切都说它们是相互独立的,但是当我更新一个同样适用于另一个??

谁能解释一下这个?

注意到我正在运行这些http://labs.codecademy.com/#:workspace …

python list

19
推荐指数
3
解决办法
507
查看次数

Excel 列表对象 VBA 性能错误?

我在使用列表对象(又名 Excel 表格)的 excel 应用程序上遇到了性能问题。我怀疑这可能是一个错误,但尽管我在谷歌上搜索,但我找不到任何参考。我已经为我的应用程序开发了一种解决方法,但我感兴趣的是是否有人可以深入了解为什么会发生这种情况。

注意:我在 Windows Vista 上使用 Excel 2007。设置如下:我有一个电子表格,其中包含一个列表对象中的数据,带有可以通过命令按钮启动的 VBA 代码;此代码可以对工作表上的任意数量的单元格进行多次编辑,因此在进行任何编辑之前,Excel 的计算模式设置为手动。

我遇到的问题是,如果当前活动的单元格在列表对象内,那么将计算模式设置为手动似乎没有任何效果。因此,如果用户碰巧在同一实例中打开了大量计算工作簿,则 VBA 代码运行速度非常慢。我几乎不得不拆开我的应用程序,发现这是由活动单元引起的;并且我创建了一个包含此场景简单版本的新工作簿,以确认我的应用程序没有某种损坏。

我一直在用这个做一些测试用例,下面是我发现的结果:

  1. 虽然看起来一般都跟计算有关,但是计算模式在手动和自动之间切换还是有时间差的……

    • 手动 = 7.64 秒
    • 自动 = 9.39 秒

    手动模式比自动模式快不到 20%。但我的期望是它们或多或少是相同的,考虑到问题似乎是即使在手动模式下也开始计算。

  2. 与活动单元格不在列表对象上时相比,结果大不相同......

    • 手动 = 0.14 秒
    • 自动 = 3.23 秒

    现在,手动运行速度提高了 50 倍,而自动运行显示计算时间不应超过 3.2 秒!所以现在第一个测试看起来可能在手动模式下运行了两次计算,在自动模式下运行了近 3 次。

  3. 再次重复这个测试,这次是在一个单元格中没有计算公式的实例中,突然它看起来没有那么糟糕,

    • 活动单元格为 List Object & Calc 为 Manual = 0.17 秒
    • 活动单元格是列表对象和计算是自动 = 0.20 秒
    • 活动单元格为空且计算为手动 = 0.14 秒
    • 活动单元格为空且计算器为自动 = 0.18 秒

    它仍然较慢,但现在只有 10-20%,使其不明显。但这确实表明该问题必须以某种方式与计算相关,否则它应该与第一次测试一样长。

如果有人想创建这些测试以供自己查看,设置如下:

  • 添加了列表对象的新工作簿(不必链接到任何数据)
  • 添加一些需要 excel 一段时间才能计算的公式(我只是重复了 30,000 次 '=1*1')
  • 编写一个快速的 VBA …

excel performance vba listobject

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

来自WScript.Shell Exec的实时控制台输出

我花了大部分时间寻找解决方案,我开始认为它可能不符合我的要求

我的基本设置是运行从excel vba代码调用的vbscript(.vbs).vba代码必须继续运行并使vbscript保持运行,但会不时使用它进行监视Exec.Status

在vbscript中,我用它WScript.StdOut.WriteLine "whatever"来跟踪/调试它的进度,但就目前而言,我只能在excel vba代码完成后才能读取它的输出.

我想要的是从vbscript看到实时输出到控制台

这是vba代码......

Dim WSH As IWshRuntimeLibrary.WshShell   'Windows Script Host Object Model
Dim Exec As WshExec 

Set WSH = CreateObject("WScript.Shell")
Set Exec = WSH.Exec("%COMSPEC% /C CSCRIPT.EXE //nologo " _
    & VbsFileDir _
    & " " & Arg1 _
    & " " & Arg2 _
    & " " & Arg3 _
    & " " & Arg4)
Run Code Online (Sandbox Code Playgroud)

我已经能够通过转换来获得实时输出WSH.ExecWSH.Run,但我确实需要访问Exec.Status,这是不是可以下WSH.Run


更新 - 2015-02-06

进一步澄清......使用@ Ekkehard.Horner提供的示例'... B.vbs'代码答案......以下excel-vba代码将向控制台显示实时输出...

WSH.Run("cscript C:\28353522-B.vbs")
Run Code Online (Sandbox Code Playgroud)

...但以下内容不会向控制台显示任何内容 …

console vbscript vba wsh excel-vba

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

如何在Unix Bash脚本中用新行替换"\n"字符串

似乎无法在网上找到这个答案...

我有一个字符串变量(外部源),新行"\n"编码为字符串.

我想用实际的新行回车替换这些字符串.下面的代码可以达到这个目的......

echo $EXT_DESCR | sed 's/\\n/\n/g'
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将结果存储到它自己的变量中时,它会将它们转换回字符串

NEW_DESCR=`echo $EXT_DESCR | sed 's/\\n/\n/g'`
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标,或者我做错了什么?

这是我的代码,我一直在测试,以尝试获得正确的结果

EXT_DESCR="This is a text\nWith a new line"
echo $EXT_DESCR | sed 's/\\n/\n/g'

NEW_DESCR=`echo $EXT_DESCR | sed 's/\\n/\n/g'`
echo ""
echo "$NEW_DESCR"
Run Code Online (Sandbox Code Playgroud)

unix variables bash shell

3
推荐指数
2
解决办法
785
查看次数

标签 统计

vba ×2

bash ×1

console ×1

excel ×1

excel-vba ×1

list ×1

listobject ×1

performance ×1

python ×1

shell ×1

unix ×1

variables ×1

vbscript ×1

wsh ×1