python - 从 Python 中的字符列表创建句子(R 代码翻译)
问题描述
我有一个清单如下
mylist = ['f', 'i', 'r', 's', 't', ' ', 'r', 'a', 'y', ' ', '>', ' ', 's', 'a', 'n', 'k', 'r', 'i', 't', ' ', '>', ' ', 'f', 'e', 'm', 'a', 'l', 'e', ' ', '>', ' ', ' ', '=', ' ', 'a', 'a', 'd', 'h', 'y', 'a', '\n', 'u', 'n', 'i', 'q', 'u', 'e', ' ', '>', ' ', 's', 'a', 'n', 'k', 'r', 'i', 't', ' ', '>', ' ', 'm', 'a', 'l', 'e', ' ', '>', ' ', ' ', '=', ' ', 'a', 'd', 'h', 'v', 'a', 'i', 't', 'h']
我有一个基于列表生成的序列:
sequence = np.arange(0, len(mylist) - 11, 3)
它产生
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66]
我的输出是一个二维列表
loop on the sequence
dimension1= mylist[sequence:sequence+11]
dimension2 = mylist[sequence+12]
最终输出列表应如下所示:
dimension1 dimension2
"f" "i" "r" "s" "t" " " "r" "a" "y" " " ">" " " "s"
"s" "t" " " "r" "a" "y" " " ">" " " "s" "a" "n" "s"
"r" "a" "y" " " ">" " " "s" "a" "n" "s" "k" "r" "i"
`
我想在不编写 for 循环的情况下生成它。我可以在 R 中做到这一点,如下所示
mylist = list (c('f', 'i', 'r', 's', 't', ' ', 'r', 'a', 'y', ' ', '>', ' ', 's', 'a', 'n', 'k', 'r', 'i', 't', ' ', '>', ' ', 'f', 'e', 'm', 'a', 'l', 'e', ' ', '>', ' ', ' ', '=', ' ', 'a', 'a', 'd', 'h', 'y', 'a', '\n', 'u', 'n', 'i', 'q', 'u', 'e', ' ', '>', ' ', 's', 'a', 'n', 'k', 'r', 'i', 't', ' ', '>', ' ', 'm', 'a', 'l', 'e', ' ', '>', ' ', ' ', '=', ' ', 'a', 'd', 'h', 'v', 'a', 'i', 't', 'h'))
mylist = unlist(mylist)
dataset <- map(
seq(1, length(mylist) - 12-1, by = 3),
~list(sentece = mylist[.x:(.x + 11)], next_char = mylist[.x + 12])
)
dataset <- transpose(dataset)
有人可以帮我将上面的 R 代码翻译成 Python
解决方案
我们可以初始化一个字典并将值附加到它
import pandas as pd
maxlen = 12
dictN = {'dimension1':[], 'dimension2':[]}
mlenN = maxlen - 1
for i in range(0, len(mylist) - mlenN, 3):
dictN['dimension1'].append(mylist[i:(i+mlenN)])
dictN['dimension2'].append(mylist[i + maxlen-1])
pd.DataFrame(dictN)
或者正如评论中提到的@Parfait,它可以写成字典理解
maxlen = 12
mlenN = maxlen - 1
dictN = [{'dimension1':mylist[i:(i+mlenN)], \
'dimension2':mylist[i + maxlen-1]} \
for i in range(0, len(mylist) - mlenN, 3)]
推荐阅读
- c# - 如何配置 .net core api 中使用的默认 XmlSerializer
- r - 如何计算所有行中列中值的实例数?
- cmake - 如何为 Synology NAS 交叉编译 neovim
- javascript - 我想使用 JavaScript 输出数字 1-10,但是当我单击开始时,它实际上什么也没做
- c# - 在不同的线程中过滤 CollectionViewSource
- javascript - 得到提示以识别 javascript 刽子手游戏“选择的单词”中的字母
- reactjs - 未找到 npx 命令。对于反应JS
- python - 嵌套列表到嵌套列表内的参数列表中
- c# - 我得到了 CS0029 C# 无法将类型“int”隐式转换为“bool”
- r - 如何根据字符串值R分配相同的ID号