我想知道是否有一条快捷方式可以在Python列表中列出一个简单的列表.
我可以在for循环中做到这一点,但也许有一些很酷的"单行"?我用reduce尝试了,但是我收到了一个错误.
码
l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
reduce(lambda x, y: x.extend(y), l)
Run Code Online (Sandbox Code Playgroud)
错误信息
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
AttributeError: 'NoneType' object has no attribute 'extend'
Run Code Online (Sandbox Code Playgroud) 是否有内置功能可以从Python中的列表中删除重复项,同时保留顺序?我知道我可以使用一个集来删除重复项,但这会破坏原始顺序.我也知道我可以像这样滚动自己:
def uniq(input):
output = []
for x in input:
if x not in output:
output.append(x)
return output
Run Code Online (Sandbox Code Playgroud)
但是如果可能的话,我想利用内置或更多的Pythonic习语.
是否有可能每隔第n个字符拆分一个python字符串?
例如,假设我有一个包含以下内容的字符串:
'1234567890'
Run Code Online (Sandbox Code Playgroud)
我怎么能让它看起来像这样:
['12','34','56','78','90']
Run Code Online (Sandbox Code Playgroud) 假设我有一个Python函数,它在元组中返回多个值:
def func():
return 1, 2
Run Code Online (Sandbox Code Playgroud)
是否有一种很好的方法可以忽略其中一个结果,而不仅仅是分配给一个临时变量?如果我只对第一个值感兴趣,是否有比这更好的方法:
x, temp = func()
Run Code Online (Sandbox Code Playgroud) 如何查看S3中的存储桶内部有boto3什么?(即做一个"ls")?
执行以下操作:
import boto3
s3 = boto3.resource('s3')
my_bucket = s3.Bucket('some/path/')
Run Code Online (Sandbox Code Playgroud)
收益:
s3.Bucket(name='some/path/')
Run Code Online (Sandbox Code Playgroud)
我怎么看其内容?
在许多符号数学系统中,例如Matlab或Mathematica,您可以使用类似的变量Ans或%检索最后计算的值.Python shell中是否有类似的工具?
由于C ++ 17可以编写一个if块,因此将完全执行一次,如下所示:
#include <iostream>
int main() {
for (unsigned i = 0; i < 10; ++i) {
if (static bool do_once = true; do_once) { // Enter only once
std::cout << "hello one-shot" << std::endl;
// Possibly much more code
do_once = false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可能对此有过多的思考,还有其他方法可以解决此问题,但是仍然-是否可以以这种方式编写此文本,因此do_once = false最后不需要?
if (DO_ONCE) {
// Do stuff
}
Run Code Online (Sandbox Code Playgroud)
我在考虑一个辅助函数,do_once()其中包含static bool do_once,但是如果我想在不同的地方使用相同的函数呢?可能这是时间和地点#define吗?我希望不是。
我发现,有一个相关的问题,关于如何查找列表中是否存在至少一个项目:
如何检查下列项目之一是否在列表中?
但是,查找列表中是否存在所有项目的最佳和pythonic方法是什么?
通过文档搜索,我找到了这个解决方案:
>>> l = ['a', 'b', 'c']
>>> set(['a', 'b']) <= set(l)
True
>>> set(['a', 'x']) <= set(l)
False
Run Code Online (Sandbox Code Playgroud)
其他解决方案是:
>>> l = ['a', 'b', 'c']
>>> all(x in l for x in ['a', 'b'])
True
>>> all(x in l for x in ['a', 'x'])
False
Run Code Online (Sandbox Code Playgroud)
但在这里你必须做更多的打字.
还有其他解决方案吗?
以下代码有什么作用?
a = lambda _:True
Run Code Online (Sandbox Code Playgroud)
从我在交互式提示中阅读和测试的内容来看,它似乎始终是一个返回的函数True.
我理解正确吗?我希望理解为什么_还使用了下划线().
这非常难看:
psData = []
nsData = []
msData = []
ckData = []
mAData = []
RData = []
pData = []
Run Code Online (Sandbox Code Playgroud)
有没有办法在一行上声明这些变量?