关于python和.join()方法的一个基本问题:
file1 = open(f1,"r")
file2 = open(f2,"r")
file3 = open("results","w")
diff = difflib.Differ()
result = diff.compare(file1.read(),file2.read())
file3.write("".join(result)),
Run Code Online (Sandbox Code Playgroud)
上面的代码片段以字符串格式生成一个存储在名为"results"的文件中的良好输出,逐行显示两个文件之间的差异.但是我注意到,如果我只是在不使用.join()的情况下打印"result" ,编译器将返回包含内存地址的消息.在尝试将结果写入文件而不使用.join()之后,编译器通知我,在.join()方法中只能使用字符串和字符缓冲区,而不是生成器对象.因此,根据我提出的所有证据,如果我错了,请纠正我:
result = diff.compare(file1.read(),file2.read()) <----结果是生成器对象?
result是一个字符串列表,它result本身是第一个字符串的引用?
.join() 获取一个内存地址并指向第一个,然后迭代该结构中字符串的其余地址?
生成器对象是一个返回指针的对象?
如果我的问题不清楚,我道歉,但我基本上想问问python退伍军人,如果我的扣除是正确的.我的问题不是关于可观察的结果,而是更多关于python的内部工作原理.我感谢你的所有帮助.
我有一段代码,我已经声明了两种数据类型.我已经自动派生为类型类的成员enum,但是,我不喜欢它们不是"循环".通过这个,我的意思是召唤succ Sun应该让我受益Mon.succ Dec应该导致Jan.所以我没有写自己的枚举,而是这样做:
data WeekDay = Mon | Tue | Wed | Thu | Fri | Sat | Sun
deriving (Enum, Show, Eq, Bounded)
data Month = Jan | Feb | Mar | Apr | May | Jun | July | Aug | Sep | Oct | Nov
| Dec
deriving (Enum, Show, Eq, Bounded)
class Circ a where
next :: Enum a => a -> a
instance Circ WeekDay …Run Code Online (Sandbox Code Playgroud) 我怀疑这是一个问题ghc或cabal-install:
我曾经以这种格式获取构建信息:
Resolving dependencies...
Configuring ltk-0.8.0.6...
Building ltk-0.8.0.6...
Preprocessing library ltk-0.8.0.6...
[ 1 of 12] Compiling Graphics.UI.Frame.Panes ( src/Graphics/UI/Frame/Panes.hs, dist/build/Graphics/UI/Frame/Panes.o )
[ 2 of 12] Compiling Graphics.UI.Editor.Parameters ( src/Graphics/UI/Editor/Parameters.hs, dist/build/Graphics/UI/Editor/Parameters.o )
[ 3 of 12] Compiling Control.Event ( src/Control/Event.hs, dist/build/Control/Event.o )
[ 4 of 12] Compiling MyMissing ( src/MyMissing.hs, dist/build/MyMissing.o )
[ 5 of 12] Compiling Graphics.UI.Editor.Basics ( src/Graphics/UI/Editor/Basics.hs, dist/build/Graphics/UI/Editor/Basics.o )
[ 6 of 12] Compiling Graphics.UI.Editor.MakeEditor ( src/Graphics/UI/Editor/MakeEditor.hs, dist/build/Graphics/UI/Editor/MakeEditor.o )
[ 7 of 12] Compiling …Run Code Online (Sandbox Code Playgroud) 我有一些数据类型Verb p定义如下:
data Verb p = Look {getPreps :: p}
| LookExtra {getPreps :: p}
| Touch {getPreps :: p}
| Smell {getPreps :: p}
| HearExtra {getPreps :: p}
| Hear {getPreps :: p}
| Taste {getPreps :: p}
| Pickup {getPreps :: p}
| PickupExtra {getPreps :: p}
| Move {getPreps :: p}
| MoveExtra {getPreps :: p}
deriving (Show,Ord,Eq)
Run Code Online (Sandbox Code Playgroud)
我必须使这个数据类型成为Functor至少一个实例.因此:
instance Functor Verb where
fmap f (Look a) = Look (f a)
fmap …Run Code Online (Sandbox Code Playgroud) 我有三个数据结构定义为这样的,其中S,LL,M,和Object,表示Set,ListLike,Map,和ByteString,分别为:
nouns :: IO [Object]
nouns = liftM LL.words $ B.readFile "nounlist.txt"
obj :: IO ObjectSet
obj = liftM S.fromList nouns
actions :: IO ActionMap
actions = do
n <- nouns
let l = foldl' (\z x -> (x,Sell):(x,Create):z) [] n
return $ M.fromList $
(\(x,y) -> ((x, Verb y []), Out (Verb y []) x)) <$> l
Run Code Online (Sandbox Code Playgroud)
现在我有一个函数将未评估的Set和Map绑定到变量a和o.一旦进入query …
multithreading haskell memory-management haskell-snap-framework
我想从Prolog中制定的规则中获取解决方案列表.
但是,findall谓词似乎只适用于一个变量.
任何人都可以建议如何解决这个明显的限制?
我的规则
beat(P,M,E)
Run Code Online (Sandbox Code Playgroud)
我想要的是
L = [[P,M],[P,M],................]
Run Code Online (Sandbox Code Playgroud)
我现在得到什么
L = [P,P,P,P,.........]
Run Code Online (Sandbox Code Playgroud)
要么
L = [M,M,M,M,M.............]
Run Code Online (Sandbox Code Playgroud)