如何批量处理序列的元素?
例如,使用序列"abcdef"和批量大小为2,我想执行以下操作:
for x, y in "abcdef":
print "%s%s\n" % (x, y)
ab
cd
ef
Run Code Online (Sandbox Code Playgroud)
当然,这不起作用,因为它期望列表中的单个元素本身包含2个元素.
什么是一个漂亮,简短,干净,pythonic的方式来处理批处理列表中的下一个n个元素,或者从一个更大的字符串处处理长度为n的子字符串(两个类似的问题)?
我想计算包含Machine Learning数据集的Python类的哈希值.哈希意味着用于缓存,所以我想到md5或sha1.问题是大多数数据都存储在NumPy数组中; 这些不提供__hash__()会员.目前我pickle.dumps()为每个成员做一个并根据这些字符串计算哈希.但是,我发现以下链接指示同一对象可能导致不同的序列化字符串:
为包含Numpy数组的Python类计算哈希的最佳方法是什么?
问题相当简单,但没有通过搜索得到回答.如何在python脚本中确定此脚本是作为模块导入还是作为脚本运行?在python中有什么不同吗?
问题是,我只想在作为脚本运行时评估命令行参数,但是如果仅导入模块以在另一个脚本中使用它,则不会.(我希望能够使用一个脚本作为库和程序.)我担心vanilla的方式是构建lib和使用它的第二个脚本,但是我想为小工具提供第二个选项. /库.
我是RegEx的新手,这个特殊的问题令我感到沮丧.这适用于JavaScript函数.
我需要验证输入,以便它只匹配此条件:
我可以很容易地为前两个标准编写一个模式,但第三个标准更难.这是我管理的最后一个模式,但它似乎不适用于测试字符串Farh%%$$+++,
任何帮助将不胜感激.
谢谢.
我只是无法弄清楚这有什么问题......
#!/usr/bin/env python
#
# Bugs.py
#
from __future__ import division
# No Module!
if __name__ != '__main__':
print "Bugs.py is not meant to be a module"
exit()
# App
import pygame, sys, random, math
pygame.init()
# Configuration Vars
conf = {
"start_energy": 50,
"food_energy": 25,
"mate_minenergy": 50,
"mate_useenergy": 35,
"lifespan": 300000
}
class Bugs:
def __init__(self):
self.list = []
self.timers= {}
# Names / colors for sexes
self.sex = ["Male", "Female"]
self.color = ["#CBCB25", "#A52A2A"]
# Bug info tracking …Run Code Online (Sandbox Code Playgroud) 我在某处读到函数应该总是只返回一种类型,所以下面的代码被认为是坏代码:
def x(foo):
if 'bar' in foo:
return (foo, 'bar')
return None
Run Code Online (Sandbox Code Playgroud)
我想更好的解决方案是
def x(foo):
if 'bar' in foo:
return (foo, 'bar')
return ()
Run Code Online (Sandbox Code Playgroud)
返回一个None然后创建一个新的空元组不是更便宜的记忆吗?或者这个时间差太小而不能注意到即使在较大的项目中?
我有一个对象列表,我想把它变成一个集合.我的对象包含一些字段,其中一些是o.id和o.area.如果这两个字段相同,我希望两个对象相等.即:o1==o2当且仅当o1.area==o2.area and o1.id==o2.id.
我尝试过度写作__eq__,__cmp__但我得到了错误:TypeError: unhashable instance.
我该怎么写?
我有以下代码:
l = ['-1.2', '0.0', '1']
x = 100.0
for i in l:
if i < x:
x = i
print x
Run Code Online (Sandbox Code Playgroud)
代码应该找到我的列表中的最低值(-1.2),但是当我打印'x'时它发现值仍然是100.0我的代码出错在哪里?
伙计们,我刚刚开始使用python并且对可选参数感到困惑,比如我有这样的程序:
class B:
pass
class A:
def __init__(self, builds = B()):
self.builds = builds
Run Code Online (Sandbox Code Playgroud)
如果我创建A两次
b = A()
c = A()
Run Code Online (Sandbox Code Playgroud)
并打印他们的构建
print b.builds
print c.builds
Run Code Online (Sandbox Code Playgroud)
我发现他们正在使用完全相同的对象,
<__main__.B instance at 0x68ee0>
<__main__.B instance at 0x68ee0>
Run Code Online (Sandbox Code Playgroud)
但它不是我想要的,因为如果b改变一些内部构建状态,c对象中的那个也将被改变.
是否可以通过使用此可选参数语法每次重新创建此可选参数?
作为一个实验,我这样做了:
letters=['a','b','c','d','e','f','g','h','i','j','k','l']
for i in letters:
letters.remove(i)
print letters
Run Code Online (Sandbox Code Playgroud)
最后一次打印显示并非所有项目都被删除了?(每隔一个人).
IDLE 2.6.2
>>> ================================ RESTART ================================
>>>
['b', 'd', 'f', 'h', 'j', 'l']
>>>
Run Code Online (Sandbox Code Playgroud)
对此有何解释?如何重新编写以删除每个项目?