如果我有:
>>> a=[1,2]
>>> b=[3,4]
>>> c=[5,6]
Run Code Online (Sandbox Code Playgroud)
是否有一个单行获得:
d = ([1,3,5],[2,4,6])
Run Code Online (Sandbox Code Playgroud) 我想在一个循环中一次总结多个属性:
class Some(object):
def __init__(self, acounter, bcounter):
self.acounter = acounter
self.bcounter = bcounter
someList = [Some(x, x) for x in range(10)]
Run Code Online (Sandbox Code Playgroud)
我可以做一些比它更简单,更快速的事情吗?
atotal = sum([x.acounter for x in someList])
btotal = sum([x.bcounter for x in someList])
Run Code Online (Sandbox Code Playgroud) 我正在使用 NLTK 和模块 freqDist
import nltk
from nltk.corpus import gutenberg
print(gutenberg.fileids())
from nltk import FreqDist
fd = FreqDist()
for word in gutenberg.words('austen-persuasion.txt'):
fd[word] += 1
newfd = sorted(fd, key=fd.get, reverse=True)[:10]
Run Code Online (Sandbox Code Playgroud)
所以我正在使用 NLTK,并且有一个关于排序部分的问题。当我运行这样的代码时,它会正确对 freqDist 对象进行排序。但是,当我使用 get() 而不是 get 运行它时,我遇到了错误
Traceback (most recent call last):
File "C:\Python34\NLP\NLP.py", line 21, in <module>
newfd = sorted(fd, key=fd.get(), reverse=True)[:10]
TypeError: get expected at least 1 arguments, got 0
Run Code Online (Sandbox Code Playgroud)
为什么 get 是对的而 get() 是错的。我的印象是 get() 应该是正确的,但我想事实并非如此。
我有一个元组列表(在这种情况下是纬度和经度的坐标)
[(51.69768233153901, -5.039923897568534),
(52.14847612092221, 0.33689512047881015),
(52.14847612092221, 0.33689512047881015),
....]
Run Code Online (Sandbox Code Playgroud)
我试图将它们分成两个单独的列表(一个用于纬度,一个用于经度)
我无法解决如何循环将它们添加到列表中,到目前为止我有:
lat = latlon_df.at[0,'LatLon'][0]
lon = latlon_df.at[0,'LatLon'][1]
Run Code Online (Sandbox Code Playgroud)
它标识了每个中的第一个.有人可以告诉我如何创建2个新列表?
谢谢你的帮助!
我需要绘制列表中最常出现的 5 个单词的直方图。我使用 collections 模块的 c.counter().most_common() 给我以下元组:
[('you', 7706), ('i', 6570), ('we', 2733), ('my', 2718), ('he', 2369)]
Run Code Online (Sandbox Code Playgroud)
当数据采用格式(“词”,频率)时,如何绘制直方图?
我熟悉的格式是: ['you', 'you', 'you', ... , 'i', 'i', 'i', ... , etc.]
我知道我可以将字符串乘以每个元素中的整数,以我熟悉的格式构建一个新列表以在直方图上绘制,但我觉得必须有一种更有效的方法来做到这一点。
是否可以从内联获取多个返回值?例如,:
a,b=[(1,2) for _ in range(3)]
Run Code Online (Sandbox Code Playgroud)
使得:
a=[1,1,1]
b=[2,2,2]
Run Code Online (Sandbox Code Playgroud) 我正在尝试理解*当输入为zip2D列表时使用解包参数的必要性.该文档的状态,
[zip]返回元组的迭代器,其中第i个元组包含来自每个参数序列或迭代的第i个元素.
所以,关于print下面的第二个陈述,我预计它就像它之前和之后的那个.我无法将描述连接zip到此结果.
MWE:
x = [1, 2, 3]
y = [4, 5, 6]
print zip(x, y)
print zip([x, y]) # don't understand this result
print zip(*[x, y])
Run Code Online (Sandbox Code Playgroud)
结果:
[(1, 4), (2, 5), (3, 6)]
[([1, 2, 3],), ([4, 5, 6],)]
[(1, 4), (2, 5), (3, 6)]
Run Code Online (Sandbox Code Playgroud) 我不知道Python是否有可能,这就是我在这里问它的原因。
我有一个返回元组的Python函数:
def my_func(i):
return i * 2, 'a' * i
Run Code Online (Sandbox Code Playgroud)
这只是一个给定数字的哑函数k,它k * 2按原样返回,另一个字符串是字母“ a”的连接k时间。
现在,我想形成两个列表,使用调用函数i = 0...9,我想创建一个包含所有第一个值的列表,并创建一个包含其余所有值的列表。
我目前的知识是:
选项1:两次运行相同的列表理解,但效率不高:
first_vals = [my_func(i)[0] for i in range(10)]
second_vals = [my_func(i)[1] for i in range(10)]
Run Code Online (Sandbox Code Playgroud)
选项2:避免列表理解:
first_vals = []
second_vals = []
for i in range(10):
f, s = my_func(i)
first_vals.append(f)
second_vals.append(s)
Run Code Online (Sandbox Code Playgroud)
选项3:使用列表推导获取元组列表,然后使用另外两个列表推导复制值。它比选项1更好,因为这里my_func()每个选项仅被调用一次i:
ret = [my_func(i) for i in range(10)]
first_vals = …Run Code Online (Sandbox Code Playgroud) 我使用的列表列表如下:
L = [['a', 4], ['b', 2], ['c', 13]]
Run Code Online (Sandbox Code Playgroud)
我想为列表的每个集合中位于第二个位置的所有数字生成一个新列表:
L = [4, 2, 13]
Run Code Online (Sandbox Code Playgroud)
在python中有任何快捷方式可以获得上面的列表吗?
python ×9
dictionary ×1
ipython ×1
matplotlib ×1
nlp ×1
nltk ×1
python-2.7 ×1
sorting ×1
tuples ×1