假设我们有一个清单L = [1,2,3,4,5].是否有一种干净的方法来制作以下形式的元组列表:T = [(1,2),(2,3),(3,4),(4,5)]?
如果有更好的替代方案,那就太好了
T = []
for i in range(len(L) - 1):
T.append((L[i], L[i+1]))
Run Code Online (Sandbox Code Playgroud)
或者等同的理解.
我已经创建了Board一个连接4游戏的类,它使用列表列表.我想让对象支持索引板的行和列:
class Test:
def __init__(self, cols, rows):
self.cols = cols
self.rows = rows
self.data = [[' '] * cols for row in range(rows)]
def __iter__(self):
yield from self.data
def __getitem__(self, row):
pass
# what should this be?
Run Code Online (Sandbox Code Playgroud)
我知道我需要定义__getitem__但是这个方法应该允许什么语法b[1][1]?我已经看了一些过去的问题,但我似乎无法找到我正在寻找的答案.
编辑:也许以下是正确的做事方式?
def __getitem__(self, row):
return self.data[row]
Run Code Online (Sandbox Code Playgroud) 我已经GetEnumerator为一个简单的类实现了这个方法,并且很惊讶我无法使用linq命令枚举器(调用this.OrderBy(x => x)无效).有人可以解释一下这里发生了什么吗?我做错了什么或只是想要迭代的调查员?
class Test
{
private Dictionary<int, string> dict
= new Dictionary<int, string>();
public IEnumerator<int> GetEnumerator()
{
return dict.Keys.GetEnumerator();
}
public Test()
{
dict[1] = "test";
dict[2] = "nothing";
}
public IEnumerable<int> SortedKeys
{
get { return this.OrderBy(x => x); } // illegal!
}
public void Print()
{
foreach(var key in this)
Console.WriteLine(dict[key]);
}
}
Run Code Online (Sandbox Code Playgroud) 在我正在处理的一些C#代码中,一个DateTimeobject(dt)与两个字符串连接在一起:
string test = "This is a test " + dt + "...Why does this work?"
Run Code Online (Sandbox Code Playgroud)
这不会引发编译错误,并且工作正常.我的问题:为什么这是合法的?这是仅特定于DateTime对象,还是覆盖该ToString()方法的任何对象?
我通常使用类似于人们可能使用的类namedtuple(当然除了属性是可变的).此外,我尝试将冗长的函数放在不经常实例化的类中,以帮助节省内存.
从内存的角度来看,如果期望经常实例化类,那么将函数放在类中是否效率低?撇开这是分隔功能的好设计,这应该是值得担心的吗?
是否将list1 ::: list2操作符应用于两个列表对应于将所有内容附加list1到list2?
scala> val a = List(1,2,3)
a: List[Int] = List(1, 2, 3)
scala> val b = List(4,5,6)
b: List[Int] = List(4, 5, 6)
scala> a:::b
res0: List[Int] = List(1, 2, 3, 4, 5, 6)
Run Code Online (Sandbox Code Playgroud)
这个运营商还有其他用途吗?我:::在Scala文档中找不到任何内容,我想知道它的正式名称和用途的范围.
给定一个属性
class Test
{
private string name;
public string Name
{
get { return name; }
set { name = value;}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用反射来查找程序集中的所有get/set引用?例如,如果某些测试代码正在使用此属性,如下所示
class Client
{
private Test test = new Test();
public string Name = test.Name;
}
Run Code Online (Sandbox Code Playgroud)
反射可以找到Client调用get方法Test.Name吗?我可以打开我的 IDE 并执行“查找所有引用”,但我想知道这是否可以自动化。
我们的数据库中有一个包含一列+分隔字符串的表.无论如何选择每一行的总和?即,说我们有5212667+5212662; 我想选择10425329.
我试过了CONVERT(INT, ColumnAddList),但这没用.
我尝试按如下方式使用 Pydantic:
from pydantic import BaseModel
class A(BaseModel):
prop1: str
prop2: str
class B(BaseModel):
a: A
data = {
'prop1': 'some value',
'prop2': 'some other value'
}
b = B(**data)
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
Traceback (most recent call last):
File "main.py", line 18, in <module>
b = B(**data)
File "pydantic/main.py", line 283, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 1 validation error for B
a
field required (type=value_error.missing)
Run Code Online (Sandbox Code Playgroud)
pydantic 是否可以创建所需的A实例B?
python ×5
c# ×3
enumerator ×1
lambda ×1
linq ×1
oop ×1
pydantic ×1
reflection ×1
scala ×1
sql ×1
sql-server ×1
t-sql ×1