我如何遍历数字列表,以及有多少不同的方法可以做到这一点?
我认为会起作用:
#include <cstdlib>
#include <iostream>
#include <list>
using namespace std;
int main()
{
int numbers[] = {2, 4, 6, 8};
int i = 0;
for(i=0; i< numbers.size();i++)
cout << "the current number is " << numbers[i];
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在for循环行上遇到错误:
请求部件
'size'中'numbers',其是非类类型的'int[4]'
附加到列表可能有两种方式:
1)
mat = []
for i in range(10):
mat.append(i)
Run Code Online (Sandbox Code Playgroud)
要么
2)
mat = []
for i in range(10):
mat += [i]
Run Code Online (Sandbox Code Playgroud)
示例中显示的方法append()是为列表对象定义的; 它在列表的末尾添加了一个新元素.在此示例中,它等效于result = result + [a],但效率更高.
文档表明方法1更有效.为什么会这样?
让我们考虑任何用户定义的pythonic类.如果我打电话dir(obect_of_class),我会得到它的属性列表:
['__class__', '__delattr__', '__dict__', '__dir__', ... '__weakref__', 'bases',
'build_full_name', 'candidates', ... 'update_name'].
Run Code Online (Sandbox Code Playgroud)
您可以在此列表中看到两种类型的属性:
我需要覆盖__dir__它,它将只返回用户定义的attribltes.我怎么能这样做?
很明显,如果在重写函数中我自称,它会给我无限递归.所以,我想做这样的事情:
def __dir__(self):
return list(filter(lambda x: not re.match('__\S*__', x), dir(self)))
Run Code Online (Sandbox Code Playgroud)
但逃避无限递归.
一般情况下,如果我不想从头开始编写但想要修改现有函数,如何修改内置函数?
我有一个
list1 = ["one", "two", "two", "three", "four" , "five", "five", "five", "six"]
Run Code Online (Sandbox Code Playgroud)
而输出应该是
list2 = ["five" , "two", "one", "three" , "six"]
Run Code Online (Sandbox Code Playgroud)
"five" 是第一个元素,因为在list1中出现的次数最多(3)"two"是第二个元素,因为在list1中出现次数最多(2)"one","three"并且"six"具有相同较低的出现次数(1),因此它们是我的最后一次list2- 只要它们在"五"和"两"之后,它们的位置并不重要.简而言之,list2 = ["five" , "two", "six", "three" , "one"]或者list2 = ["five" , "two", "three", "one" , "six"]或接受任何其他变化.我可以通过创建一个字典来存储出现次数来解决这个问题,然后用dict命令我的项目创建一个新的列表
my_dict = {i:list1.count(i) for i in list1}
Run Code Online (Sandbox Code Playgroud)
但我需要更清洁的东西
我想知道如何为 Windows 构建可嵌入的 Python。找不到该特定包的任何信息或构建配置。
我问的原因是我可以为 Mac 和 Linux 使用相同的变体。
我正在尝试创建一个将写入文件的python循环脚本.
当我在终端中执行脚本时,文件写入没有问题.
我不希望这个脚本在启动时启动,所以我把它放在rc.local文件中.该脚本运行,但它没有将输出写入指定的文件.
我做了一些关于冲洗和非缓冲输出的阅读.有人可以帮助我或指出我正确的方向吗?
当这个脚本完成后,它将使用REST发送文件,但是在我到达那里之前我需要写文件.
剧本:
#!/usr/bin/python -u
while True:
try:
print "This is only a test..."
with open("loop.txt", "a") as loopFile:
loopFile.write("This is only a test...")
loopFile.write('\n')
loopFile.flush()
loopFile.close()
time.sleep(1)
except KeyboardInterrupt:
break
quit()
Run Code Online (Sandbox Code Playgroud)
/etc/rc.local文件:
/usr/bin/python /home/pi/loop.py &
Run Code Online (Sandbox Code Playgroud)
loop.py和loop.txt都具有读/写/执行访问权限.
我有一个正则表列表,我想从中提取那些相当于字符串比较的正则表达式.
例如,那些正则表达式相当于一个简单的字符串比较:
[r"example", # No metacharacters
r"foo\.bar"] # . is not a metacharacter because it is escaped
Run Code Online (Sandbox Code Playgroud)
而那些正则表达式不是:
[r"e.ample", # . is a metacharacter
r"foo\\.bar"] # . is a metacharacter because it is not escaped
Run Code Online (Sandbox Code Playgroud)
根据https://docs.python.org/2/howto/regex.html,有效元字符列表是. ^ $ * + ? { } [ ] \ | ( ).
我即将构建一个正则表达式,但它看起来有点复杂.我想通过检查re对象或其他东西是否有快捷方式.
我为PyEnchant提供了许多语言的文件:en_US, en_AU, de_DE, fr_FR.现在我调用字典列表,只看到小集:'en', 'en_US', 'en_GB', 'en_CA'.我打电话:
items = enchant._broker.list_languages()
Run Code Online (Sandbox Code Playgroud)
如何加载Enchant其他langs?新文件?所以enchant.Dict()可以接受它.
我有一个看起来像这样的单元格:
from IPython.display import Image
i = Image(filename='test.png')
i
print("test")
Run Code Online (Sandbox Code Playgroud)
输出只是:
test
Run Code Online (Sandbox Code Playgroud)
我没有在输出中看到图像.我检查了文件是否存在(无论如何,如果它不存在,你会收到错误).
有线索吗?
我在网上搜索了很多,并unique_ptr在现代c ++中找到了很多不同的实现示例.我已经开始更新我的所有代码开始::iterators进入auto等等.然而,有了智能指针我不认为我完全理解我想要做的事情.
使用标准指针,我有:
object *temp = new object();
Run Code Online (Sandbox Code Playgroud)
然后使用新的智能指针我:
unquie_ptr<object> temp(new object());
Run Code Online (Sandbox Code Playgroud)
这不是正确的实施方式吗?如果是这样的话,当我在程序结束时构建一个简单的清理函数时,似乎更多的输入/工作来制作智能指针?
python ×8
python-3.x ×3
c++ ×2
list ×2
built-in ×1
embeddable ×1
ipython ×1
loops ×1
overriding ×1
pointers ×1
pyenchant ×1
regex ×1