如何从列表中读取元组中的每个元素
How to read each element within a tuple from a list
我想编写一个程序来读取元组列表,在元组中它将包含两个元素。第一个元素可以是一个对象,第二个元素将是该对象的数量。就像:Mylist([{Object1,Numbers},{Object2, Numbers}])
。
然后我想读取 Numbers
并打印相关对象 Numbers
次,然后将它们存储在列表中。
所以如果Mylist([{lol, 3},{lmao, 2}])
,那么我应该得到[lol, lol, lol, lmao, lmao]
作为最终结果。
我的想法是首先将这些元组(想象一下,如果有超过 2 个)解压成两个元组,第一个包含对象,第二个包含数量。
之后读取第二个元组中的数字,然后在第一个元组中打印相关对象的确切时间。但我不知道该怎么做。谢谢你的帮助!
列表理解可以做到这一点:
lists:flatten([lists:duplicate(N,A) || {A, N} <- L]).
如果你真的也想打印,使用递归:
p([]) -> [];
p([{A,N}|T]) ->
FmtString = string:join(lists:duplicate(N,"~p"), " ")++"\n",
D = lists:duplicate(N,A),
io:format(FmtString, D),
D++p(T).
此代码使用 lists:duplicate/2
为 io:format/2
创建格式字符串,将 "~p"
格式说明符复制 N
次,并使用 space 将它们连接起来string:join/2
,并添加一个换行符。然后它再次使用 lists:duplicate/2
来获取 A
的 N
个副本的列表,使用格式字符串打印那些 N
项,然后将列表与 a 的结果组合递归调用以创建函数结果。
我想编写一个程序来读取元组列表,在元组中它将包含两个元素。第一个元素可以是一个对象,第二个元素将是该对象的数量。就像:Mylist([{Object1,Numbers},{Object2, Numbers}])
。
然后我想读取 Numbers
并打印相关对象 Numbers
次,然后将它们存储在列表中。
所以如果Mylist([{lol, 3},{lmao, 2}])
,那么我应该得到[lol, lol, lol, lmao, lmao]
作为最终结果。
我的想法是首先将这些元组(想象一下,如果有超过 2 个)解压成两个元组,第一个包含对象,第二个包含数量。
之后读取第二个元组中的数字,然后在第一个元组中打印相关对象的确切时间。但我不知道该怎么做。谢谢你的帮助!
列表理解可以做到这一点:
lists:flatten([lists:duplicate(N,A) || {A, N} <- L]).
如果你真的也想打印,使用递归:
p([]) -> [];
p([{A,N}|T]) ->
FmtString = string:join(lists:duplicate(N,"~p"), " ")++"\n",
D = lists:duplicate(N,A),
io:format(FmtString, D),
D++p(T).
此代码使用 lists:duplicate/2
为 io:format/2
创建格式字符串,将 "~p"
格式说明符复制 N
次,并使用 space 将它们连接起来string:join/2
,并添加一个换行符。然后它再次使用 lists:duplicate/2
来获取 A
的 N
个副本的列表,使用格式字符串打印那些 N
项,然后将列表与 a 的结果组合递归调用以创建函数结果。