我希望有变量来控制列表开头和结尾有多少元素要跳过,例如
skip_begin = 1
skip_end = 2
my_list = [9,8,7,6,5]
print(my_list[skip_begin:-skip_end])
Run Code Online (Sandbox Code Playgroud)
返回[8,7].
如果为什么slice [:-0]在Python节目中返回空列表,则skip_end = 0会给出一个空列表.
在这种情况下,我实际上只想要my_list [skip_begin:].
my_list[skip_begin:-skip_end if skip_end != 0 else '']
Run Code Online (Sandbox Code Playgroud)
不起作用.如何在三元运算中返回空值?
我宁愿在"[]"中使用三元运算而不是
my_list[skip_begin:-skip_end] if skip_end != 0 else my_list[skip_begin:]
Run Code Online (Sandbox Code Playgroud)
或if-else块.
我读到一个程序在写入之后应该关闭文件,以防写入缓冲区中的数据仍然没有物理写入它.我还读到一些语言(如Python)会自动关闭超出范围的所有文件,例如程序结束时.
但是,如果我只是在阅读文件而不是以任何方式修改它,可能除了操作系统更改其最后访问日期之外,是否需要关闭它(即使程序永远不会终止,例如监视器的守护程序一个日志文件)?
(为什么在使用文件后需要关闭文件?一般询问文件访问,不仅仅是为了阅读.)
使用qq,Perl允许几乎任何字符用作引号来定义包含'和"不需要转义它们的字符串:
qq(She said, "Don't!")
qq¬And he said, "I won't."¬
Run Code Online (Sandbox Code Playgroud)
(特别方便,因为我的键盘¬几乎从未使用过).
Python有相同的功能吗?
在Windows 7的cmd中,我知道%〜dp0给出了批处理文件的文件夹路径,如 如何使用CMD从文件路径获取文件夹路径中所述
但是,如果路径中至少有一个插入符号(^),则此操作无效。例如,C:\ one ^ two ^^ three ^^^ fourfour ^^^^ carets \中的一批
echo %~dp0
Run Code Online (Sandbox Code Playgroud)
给
C:\onetwo^three^four^^carets\
Run Code Online (Sandbox Code Playgroud)
如何逃脱插入符号?
我希望编写一个宏来输出表达式的文本及其值,例如
int a = 2;
PRINT(a + 1);
Run Code Online (Sandbox Code Playgroud)
应该输出
a + 1 = 3
C/C++宏字符串连接显示了令牌连接的使用.然而,
#define PRINT(x) std::cout << x " = " << x << "\n"
Run Code Online (Sandbox Code Playgroud)
要么
#define PRINT(x) std::cout << (x) " = " << x << "\n"
Run Code Online (Sandbox Code Playgroud)
给
错误:预期';' 字符串常量之前
而
#define PRINT(x) std::cout << x##" = " << x << "\n"
Run Code Online (Sandbox Code Playgroud)
给
错误:粘贴"1"和""=""不提供有效的预处理令牌
我怎么能实现我的目标呢?谢谢!