我有两个列表,列表具有相同数量的项目.这两个列表如下所示:
L1 = [[1, 2], [3, 4], [5, 6]]
L2 =[[a, b], [c, d], [e, f]]
Run Code Online (Sandbox Code Playgroud)
我想创建一个看起来像这样的列表:
Lmerge = [[1, 2, a, b], [3, 4, c, d], [5, 6, e, f]]
Run Code Online (Sandbox Code Playgroud)
我试图使用zip()这样的东西:
for list1, list2 in zip(*L1, *L2):
Lmerge = [list1, list2]
Run Code Online (Sandbox Code Playgroud)
组合两个列表列表的最佳方法是什么?提前致谢.
语法如何在bash中运行?这是我的C style if if语句的伪代码.例如:
If (condition)
then
echo "do this stuff"
elseif (condition)
echo "do this stuff"
elseif (condition)
echo "do this stuff"
if(condition)
then
echo "this is nested inside"
else
echo "this is nested inside"
else
echo "not nested"
Run Code Online (Sandbox Code Playgroud) 我正在将Java转换为C#并具有以下代码(请参阅Java Context中关于其使用的讨论).一种方法可能是创建一个单独的文件/类,但是有一个C#idom保留了Java代码中的意图吗?
public class Foo {
// Foo fields and functions
// ...
private static class SGroup {
private static Map<Integer, SGroup> idMap = new HashMap<Integer, SGroup>();
public SGroup(int id, String type) {
// ...
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个调用服务时使用的函数.在调用服务之前,它将创建一个日志条目:
protected TResult CallService<TService, TResult>(TService service,
Expression<Func<TService, TResult>> functionSelector)
{
Logger.LogServiceCall(service, functionSelector);
return functionSelector.Compile()(service);
}
Run Code Online (Sandbox Code Playgroud)
Visual Studio 2010代码分析器通知我不应在以下消息中使用嵌套类型:
CA1006:Microsoft.Design:考虑一种设计,其中'ServiceManager.CallService <TService,Result>(TService,Expression <Func <TService,TResult >>)'不嵌套泛型类型'Expression <Func <TService,TResult >>' .
虽然我可以简单地为此条目创建抑制规则,但是是否存在可以阻止显示此类警告的替代方法?
以下嵌套的for循环让我很生气(在Windows 7上):
@echo off
SetLocal EnableDelayedExpansion
set TESTDIRS=fast mid slow
set TD=src\test\resources\testsuite
for %%d in (%TESTDIRS%) do (
set CTD=%TD%\%%d
echo CTD: !CTD!
REM Echos the expected path
echo CTD: %CTD%
REM Echos nothing -- understandable
for /R !CTD! %%f in (*.fs) do (echo %%f)
REM Echos nothing -- why?
for /R src\test\resources\testsuite\fast %%f in (*.fs) do (echo %%f)
REM Echos expected files
)
Run Code Online (Sandbox Code Playgroud)
我尝试了各种解决方案,包括禁用DelayedExpansion,call-statements和诸如此类的东西,但我从来没有让内循环工作.我知道我可以通过子程序调用替换内部循环,但是必须有一种方法可以使它与嵌套循环一起工作.
给出这些javascript变量:
var div_id = "my_div";
var h1_class = "my_header";
var a_class = "my_a_class";
var a_string = "teststring";
Run Code Online (Sandbox Code Playgroud)
和这个页面元素:
<div id="container"></div>
Run Code Online (Sandbox Code Playgroud)
我想用jQuery构建这个html结构:
<div id="container">
<div id="my_div">
<h1 class="my_header">
<a href="/test/" class="my_a_class">teststring</a>
</h1>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
在这里链接命令的最佳和最可读的方法是什么?
是否有可能创建包含子元素的solr文档?
例如,我将如何表示这样的事情:
<person first="Bob" last="Smith">
<children>
<child first="Little" last="Smith" />
<child first="Junior" last="Smith" />
</children>
</person>
Run Code Online (Sandbox Code Playgroud)
解决这个问题的常用方法是什么?
我想使用像角度js中的自定义指令嵌套这样的东西.有人能用简单的解决方案解释我吗?
下面的示例代码对我不起作用:
<outer>
<inner></inner>
</outer>
Run Code Online (Sandbox Code Playgroud)
JS
var app = angular.module('app',[]);
app.directive('outer',function(){
return{
restrict:'E',
template:'<div><h1>i am a outer</h1></div>',
compile : function(elem,attr){
return function(scope,elem,att,outercontrol){
outercontrol.addItem(1);
}
},
controller : function($scope){
this.addItem = function(val){
console.log(val);
}
}
}
});
app.directive('inner',function(){
return{
require : 'outer',
template : '<div><h1>i am a inner</h1></div>',
link:function(scope,elem,attr){
}
}
});
Run Code Online (Sandbox Code Playgroud) 我已经创建了一个嵌套在其中的另一个结构的结构,如下所示:
struct Theme {
var ID: Int
var name: String
struct color {
var tint: String
var tintDisabled: String
var accent: String
var background: String
var items: [String]
}
}
Run Code Online (Sandbox Code Playgroud)
我以为我能够像这样解决"色调"项目:
aTheme.color.tint
Run Code Online (Sandbox Code Playgroud)
但是aTheme没有会员"color".
我怎么能得到它?或者这只是不走,我应该使用不同的结构?
我在下面展示的是一个理论问题.但我对新的C#7编译器如何工作并解析本地函数感兴趣.
在C#7中,我可以使用本地函数.例如(您可以在LinqPad beta中尝试这些示例):
示例1:嵌套Main()
void Main()
{
void Main()
{
Console.WriteLine("Hello!");
}
Main();
}
Run Code Online (Sandbox Code Playgroud)
而不Main()是以递归方式调用,本地函数Main()被调用一次,因此它的输出是:
你好!
编译器接受此操作时没有警告和错误.
示例2: 在这里,我更深入一级,如:
void Main()
{
void Main()
{
void MainL()
{
Console.WriteLine("Hello!");
}
MainL();
}
Main();
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我也期望相同的输出,因为最里面的本地函数被调用,然后一个级别,Main()只是另一个具有局部范围的本地函数,所以它应该与第一个示例没有太大的不同.
但令我惊讶的是,我收到了一个错误:
CS0136无法在此范围内声明名为"Main"的本地或参数,因为该名称用于封闭的本地范围以定义本地或参数
问题: 您能解释为什么在例2中发生此错误,但在示例1中没有?
我想,每个内部Main()都有一个局部范围,并隐藏在外面.
更新: 感谢所有到目前为止已经提出建议的人(无论是答案还是评论),你为了解C#编译器的行为而写的是非常值得的.
根据我的阅读,在考虑了可能性之后,我在你的帮助下发现它可能是编译器错误或设计行为.
回想一下,C#有一些设计目标,可以将它与C++等语言区分开来.
如果你对我所做的事情有兴趣进一步研究它:我已经将最里面的函数重命名为MainL:
例2b:
IL_0000: call UserQuery.<Main>g__Main0_0
IL_0005: ret
<Main>g__Main0_0:
IL_0000: call UserQuery.<Main>g__Main0_1
IL_0005: ret
<Main>g__Main0_1:
IL_0000: ldstr "Hello!"
IL_0005: call System.Console.WriteLine
IL_000A: …Run Code Online (Sandbox Code Playgroud) nested ×10
c# ×3
angularjs ×1
bash ×1
batch-file ×1
c#-7.0 ×1
class ×1
document ×1
dom ×1
for-loop ×1
function ×1
html ×1
if-statement ×1
java ×1
javascript ×1
jquery ×1
linux ×1
list ×1
loops ×1
merge ×1
python ×1
scope ×1
solr ×1
static ×1
struct ×1
structure ×1
swift ×1
types ×1
windows ×1
zip ×1