小编Sup*_*Man的帖子

如何使用带有 lambda 表达式的 DefaultDict 来使默认值可变?

DefaultDicts 是有用的对象,它能够拥有一个字典,该字典可以使用用于定义默认值的可调用函数动态创建新键。例如。用于str使空字符串成为默认值。

>>> food = defaultdict(str)
>>> food['apple']
''
Run Code Online (Sandbox Code Playgroud)

您还可以使用 lambda 将表达式设为默认值。

>>> food = defaultdict(lambda: "No food")
>>> food['apple']
'No food'
Run Code Online (Sandbox Code Playgroud)

但是,您无法将任何参数传递给此 lambda 函数,这会在尝试调用该函数时导致错误,因为您实际上无法将参数传递给该函数。

>>> food = defaultdict(lambda x: "{} food".format(x))
>>> food['apple']

Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    food['apple']
TypeError: <lambda>() takes exactly 1 argument (0 given)
Run Code Online (Sandbox Code Playgroud)

即使您尝试提供参数

>>> food['apple'](12)

Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    food['apple']
TypeError: <lambda>() takes exactly 1 argument (0 given)
Run Code Online (Sandbox Code Playgroud)

这些 …

python lambda defaultdict

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

如何让Python拒绝负面索引值?

基本上我正在编写一个脚本,我想从2D列表中获取相邻值.我基本上实现了一个简单的版本,我在其中获取索引并在所有方向上添加和减去一个,并使用a捕获任何超出范围的索引try except.

try:
    keys.append(keyboard[index[0]][index[1]-1])
except IndexError:
    pass
try:
    keys.append(keyboard[index[0]][index[1]+1])
except IndexError:
    pass
try:
    keys.append(keyboard[index[0]-1][index[1]-1])
    keys.append(keyboard[index[0]-1][index[1]])
    keys.append(keyboard[index[0]-1][index[1]+1])
except IndexError:
    pass
try:
    keys.append(keyboard[index[0]+1][index[1]-1])
    keys.append(keyboard[index[0]+1][index[1]])
    keys.append(keyboard[index[0]+1][index[1]+1])
except IndexError:
    pass
Run Code Online (Sandbox Code Playgroud)

但是当然,当我运行它时,我从0中减去1时没有捕获异常,我只是索引列表的最后一个元素.

我可以测试0值,但那意味着我正在使用2个不同的测试来确定什么是有效索引,并且一直使用if语句然后我觉得它会比这更麻烦(因为我必须嵌套在那个案子).另外我觉得如果我知道一种方法可以做到这一点,那么在我打算只使用正值的未来情况下这可能是有价值的.

是否有一种方法或方法从列表索引强制python拒绝负数而只取正值?

python

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

Azure工作者角色如何使用SSD存储?

我们希望运行辅助角色来执行磁盘密集型数据库升级和扩展实例,因为我们有更多要做的事情.

看来我们无法利用DS系列虚拟机大小来实现工作者角色.将zmsize设置为DS系列机器后,我们希望得到以下错误:

Value 'Standard_DS3' specified for parameter 'RoleSize' is invalid.
Allowed values are
'ExtraSmall,Small,Medium,Large,ExtraLarge,A5,A6,A7,A8,A9,A10,A11,Standard_D1,
Standard_D2,Standard_D3,Standard_D4,Standard_D11,Standard_D12,Standard_D13,
Standard_D14'.
Run Code Online (Sandbox Code Playgroud)

有没有办法将SSD存储连接到辅助角色?

storage solid-state-drive worker role azure

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

访问nodejs中的硬件信息

我想使用nodejs访问硬件信息,例如处理器ID,HDD串行,活动LAN卡的MAC地址和其他一些信息。通过使用Windows特定命令,我可以获得ProcessorID和HDD序列号。但是该系统将在不同的操作系统上运行,因此我需要跨平台的解决方案来获取此信息。

如何获得所有平台的此信息?

hardware node.js

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

在JavaScript中给出x!= x.'x'的类型是什么?

我在JavaScript采访中被问过

如果x!=xTRUE,可能的类型是x什么?

面试官告诉我,只有一种可能的类型x可以得到这个结果.

javascript

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

使字符串格式忽略'无'

有没有办法在python中这样做,当你这样做

foo = "foo"
bar = None
"{} {}".format(foo, bar)
Run Code Online (Sandbox Code Playgroud)

它不打印无值作为bar的值?

即.它应该导致"foo "而不是"foo None"

python

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

将列表的每个元素变成一个单独的字符串?

我有以下清单:

mylist=[[3, 95],[8, 92],[18, 25],[75, 78],[71, 84],-9999,[96, 50],[91, 70],-9999,[19, 60]]

在其中,除了作为-9999值的值之外,每个元素本身就是一个列表int

假设我想使用for循环将每个元素转换为 a string,以便将其写入一个excelorcsv文件。我怎么能做到?

这是我的尝试:

mylist=[[3, 95],[8, 92],[18, 25],[75, 78],[71, 84],-9999,[96, 50],[91, 70],-9999,[19, 60]]
for i in enumerate(mylist):
    str1 = ''.join(str(e) for e in mylist)
Run Code Online (Sandbox Code Playgroud)

但是我得到的是整个列表转换为一个字符串,没有区分每个项目:

str1='[3, 95][8, 92][18, 25][75, 78][71, 84]-9999[96, 50][91, 70]-9999[19, 60]'

相反,我想要这样:

str1='[3,95]' #Iter 1
str1='[8, 92]' #Iter 2
str1='[18, 25]' #Iter 3
...
#and so forth
Run Code Online (Sandbox Code Playgroud)

python string for-loop list

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

为什么我的数组长度表达式只返回1?

我正在开发Unity游戏,只是注意到有时会出现一个奇怪的错误.发生的事情是我正在实例化的字符串数组创建得太短,即使我写的日志消息确认表达式应该创建一个更大的数组.

这是相关的代码片段:

Debug.Log("hero.power = " + hero.power.ToString());
Debug.Log("allyPower = " + allyPower.ToString());
Debug.Log("opponent.power = " + opponent.power.ToString());
int max = Mathf.Max(hero.power + allyPower, opponent.power);
report.flips[hero.name] = new string[hero.power + allyPower];
report.flips[opponent.name] = new string[opponent.power];
Debug.Log("max = " + max.ToString());
Debug.Log("report.flips[hero.name].Length = " + report.flips[hero.name].Length.ToString());
Run Code Online (Sandbox Code Playgroud)

这在Unity中创建的输出:

调试日志输出示例

这说明hero.power3allyPower0但,而不是创建string[3]它会创建一个string[1].

有没有关于使用表达式来确定导致问题的数组的长度?我暂时改为:

int heroArrayLength = hero.power + allyPower;
report.flips[hero.name] = new string[heroArrayLength];
Run Code Online (Sandbox Code Playgroud)

它似乎有所帮助,虽然虫子之前是不稳定的,所以我不完全确定它是固定的.即使是这样,我仍然不清楚实际原因是什么.

有谁知道这里发生了什么?

c# arrays unity-game-engine

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

在Lua中,使用":"的函数和不使用函数的函数有什么区别?

假设我们有两个函数声明:

function MyData:New 
end
Run Code Online (Sandbox Code Playgroud)

function New(MyData)
end
Run Code Online (Sandbox Code Playgroud)

他们之间有什么区别?:在继承和OOP方面,使用是否有任何特殊用途?我可以只调用:使用声明的函数:吗?

我来自仅使用C# - 所以如果有任何比较,它会是什么?

inheritance lua arguments function

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

当用户更改值时,从 ION 滑块获取日期值

我有一个关于我的编程问题的问题,我使用 ION Slider ( http://ionden.com/a/plugins/ion.rangeSlider/demo_advanced.html ) 和 Moment.js 进行日期范围操作。我需要为我的程序设置特定的日期范围和特定的日期范围选择器。

每当用户更改值时,它应该更新数据库。但我在这里有一个小问题,即滑块在 console.log() 中没有显示正确的格式。请帮助我解决这种情况。我的代码是,

var startDate = moment("2014-01-05");
    var endDate = moment("2014-01-13");

    range.ionRangeSlider({
        type: "double",
        grid: true,

        min: +moment(startDate).format("X"),
        max: +moment(endDate).format("X"),

        from: +moment(endDate).subtract(5, "days").format("X"),
        to: +moment(endDate).subtract(2, "days").format("X"),

        prettify: function (num) {
            return moment(num, "X").format("dddd, MMM Do YYYY");
        }
    });

    range.on("change", function () {
    var $this = $(this),
        from = $this.data("from"),
        to = $this.data("to");

        console.log(from + " - " + to);
    });
Run Code Online (Sandbox Code Playgroud)

控制台日志,

1389113336 - 1389373200
jquery-... > eval (line 28)
1389111677 - …
Run Code Online (Sandbox Code Playgroud)

javascript slider momentjs

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