小编eaz*_*001的帖子

Python生成器对象和.join

关于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()方法中只能使用字符串和字符缓冲区,而不是生成器对象.因此,根据我提出的所有证据,如果我错了,请纠正我:

  1. result = diff.compare(file1.read(),file2.read()) <----结果是生成器对象?

  2. result是一个字符串列表,它result本身是第一个字符串的引用?

  3. .join() 获取一个内存地址并指向第一个,然后迭代该结构中字符串的其余地址?

  4. 生成器对象是一个返回指针的对象?

如果我的问题不清楚,我道歉,但我基本上想问问python退伍军人,如果我的扣除是正确的.我的问题不是关于可观察的结果,而是更多关于python的内部工作原理.我感谢你的所有帮助.

python string pointers list generator

13
推荐指数
1
解决办法
3万
查看次数

制作"循环"枚举类型类的实例的冗余方法较少

我有一段代码,我已经声明了两种数据类型.我已经自动派生为类型类的成员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)

haskell types functional-programming

5
推荐指数
2
解决办法
423
查看次数

Cabal-Install失去了其构建输出的信息质量

我怀疑这是一个问题ghccabal-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)

haskell ghc cabal cabal-install

5
推荐指数
1
解决办法
314
查看次数

避免Functor Instance Boilerplate

我有一些数据类型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)

haskell boilerplate functor

3
推荐指数
1
解决办法
138
查看次数

在内存中"保存"数据映射

我有三个数据结构定义为这样的,其中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绑定到变量ao.一旦进入query …

multithreading haskell memory-management haskell-snap-framework

2
推荐指数
1
解决办法
179
查看次数

Findall在Prolog中有多个变量

我想从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)

prolog prolog-findall

2
推荐指数
1
解决办法
1227
查看次数