在这段代码中:
[x | temp <- str, x <- isVowel temp]
Run Code Online (Sandbox Code Playgroud)
我想知道是什么
<- 运营商<- str 运营商isVowel 如果其参数是元音,则返回true.
string haskell list-comprehension variable-assignment operator-keyword
我的代码是
montly_ratio = [0.046644865594960915, 0.060708276768318435, 0.07706787106693493, 0.09332535512669753, 0.10693770921153412, 0.11542007554770539, 0.11681104031351618, 0.11013791562902592, 0.09588202154576116, 0.07644396803642538, 0.056608936984611016, 0.044011964174509026]
len = 12
production_by_yr = [12129.0, 24197.0, 36205.0, 48152.0, 60038.0, 71863.0, 83628.0, 95331.0, 106974.0, 118556.0, 130077.0, 141538.0, 152938.0, 164277.0, 175555.0, 186772.0, 197929.0, 209024.0]
len = 18
Run Code Online (Sandbox Code Playgroud)
我想要做
for yr in production_by_yr:
for month in montly_ratio:
print yr * month,
Run Code Online (Sandbox Code Playgroud)
这将给我216个值
我按照以下列表理解做了同样的事情:
[yr * month for yr in production_by_yr for month in montly_ratio]
Run Code Online (Sandbox Code Playgroud)
这给了我216个值
565.7555748012809, 736.3306889229343, 934.7562081708537, 1131.9432323317144, 1297.0474750266974, 1399.9300963181188, 1416.8011079626376, 1335.8627786644554, …Run Code Online (Sandbox Code Playgroud) 早上好!
我试图定义一个列表,其中包含我之前定义的所有可能的地址类型,并使用列表理解来执行此操作.
以下是我对早期定义的看法,这些定义可能对您有所帮助:
data Row = A | B | C | D | E | F | G | H | I | J deriving (Enum, Ord, Show, Bounded, Eq, Read)
data Column = One | Two | Three | Four | Five | Six | Seven | Eight | Nine | Ten deriving (Enum, Ord, Show, Bounded, Eq, Read)
data Address = Address Row Column deriving (Show, Read, Eq)
data Cell = Cell Address Bool deriving (Show, Read, …Run Code Online (Sandbox Code Playgroud) def lst_comp():
list = []
list = (2**i for i in range(100))
print list
return list
Run Code Online (Sandbox Code Playgroud)
我这样做时得到这个: <generator object <genexpr> at 0x00000000034C48B8>
函数式编程忍者的问题.这是我的发电机:
def get_interesting_line(file,*searches):
with open(file,'r') as f:
for line in f:
if all(search in line for search in searches):
yield line
Run Code Online (Sandbox Code Playgroud)
我怀疑这可能会变成一个生成器表达式.不过,当我尝试制作时,我的头往往会受伤.可能吗?
编辑:这是我的尝试,它没有工作(产生一个生成器对象):
def test(file, *searches):
with open(file) as f:
yield (line for line in f if all(search in line for search in searches))
lines = test('myfile')
next(lines)
Run Code Online (Sandbox Code Playgroud) 我学习LYAH,并从第1章的最后一个问题是要找到a,b并c在那里(a,b,c)形成一个直角三角形,它们的总和为24 a,b,c都是Int秒.
所以我有下面的代码(本书不一样).
Prelude> [(a,b,c)|c<-[1..10],b<-[1..10],a<-[1..10],a^2+b^2==c^2,a+b+c==24]
[(8,6,10),(6,8,10)]
Run Code Online (Sandbox Code Playgroud)
我希望能得到所有可能的组合
[(8,6,10),(6,8,10),(8,10,6),(6,10,8),(10,6,8),(10,8,6)]
Run Code Online (Sandbox Code Playgroud)
为什么只显示部分内容?我尝试了不同版本的ghci,但结果相同.谢谢.
我有一个while循环,产生1-10,10倍的数字:
n=0
while n < 11:
n=n+1
num = random.randint(1,10)
print(num)
Run Code Online (Sandbox Code Playgroud)
我想在单个语句中将其转换为python3理解.
我怎么能这样做?
说列表a = [4, 8, 5, 7, 7, 7, 7, 3, 2, 2, 2, 5, 3, 3, 3, 3, 3]有没有办法用列表理解创建这个列表?
a = [4,8,5,(4乘7),3,(3乘2),5,(5乘3)]
我知道如何只使用一个重复值,而不是三个和非重复值.
我想知道是否可以通过列表理解来定义列表定义中的一系列元素.我希望通过以下方式实现这样的目标:
>> ['a', 'b', 1, 2, 3, 'c']
Run Code Online (Sandbox Code Playgroud)
我试过这个:
result_list = ['a', 'b', [i for i in range(3)] 'c']
Run Code Online (Sandbox Code Playgroud)
但这会产生 ['a', 'b', [1, 2, 3], 'c']
或者,如果我尝试使用元组,我会得到一个像这样的生成器对象: ['a', 'b', <generator object <genexpr> at 0x0000000002C9A9E8>, 'c']
能以某种方式完成吗?谢谢!
我试图以这种形式从整数列表中设置一个元组列表:(a,b)a < - [1..4]和b < - xs.但我不断得到声明的所有不同组合.
okTup :: [Int] -> [(Int,Int)]
okTup xs = [(i,j) | i <- [1..4], j <- xs]
Run Code Online (Sandbox Code Playgroud)
输入:okTup [3,1,4,2]
我得到的是:[(1,3),(1,1),(1,4),(1,2),(2,3),(2,1),(2,4),( 2,2),(3,3),(3,1),(3,4),(3,2),(4,3),(4,1),(4,4),(4, 2)]
但我只想这样:[(1,3),(2,1),(3,4),(4,2)]