我在字典中有一个单词列表,其值为=关键字的重复,但我只想要一个不同单词的列表,所以我想计算关键字的数量.有没有办法计算关键字的数量,还是有另一种方法我应该寻找不同的单词?
在编写测试用例时,我经常需要声明两个列表包含相同的元素而不考虑它们的顺序.
我一直在将列表转换为集合.
有没有更简单的方法来做到这一点?
编辑:
正如@MarkDickinson指出的那样,我可以使用TestCase.assertItemsEqual.
TestCase.assertItemsEqualPython2.7中的新增注释.如果您使用的是旧版本的Python,则可以使用unittest2 - Python 2.7新功能的后端.
我创建了一个2维数组,如:
rows =3
columns= 2
mylist = [[0 for x in range(columns)] for x in range(rows)]
for i in range(rows):
for j in range(columns):
mylist[i][j] = '%s,%s'%(i,j)
print mylist
Run Code Online (Sandbox Code Playgroud)
打印此列表会显示输出:
[ ['0,0', '0,1'], ['1,0', '1,1'], ['2,0', '2,1'] ]
Run Code Online (Sandbox Code Playgroud)
其中每个列表项都是"行,列"格式的字符串
现在给出这个列表,我想按顺序迭代它:
'0,0'
'1,0'
'2,0'
'0,1'
'1,1'
'2,1'
Run Code Online (Sandbox Code Playgroud)
这是迭代第一列然后第二列,依此类推.我如何用循环做到这一点?
这个问题属于纯python列表,而标记为相同的问题属于numpy数组.他们显然是不同的
在Python中,len是一个通过调用对象的__len__方法来获取集合长度的函数:
def len(x):
return x.__len__()
Run Code Online (Sandbox Code Playgroud)
所以我希望直接呼叫__len__()至少能够达到最快速度len().
import timeit
setup = '''
'''
print (timeit.Timer('a="12345"; x=a.__len__()', setup=setup).repeat(10))
print (timeit.Timer('a="12345"; x=len(a)', setup=setup).repeat(10))
Run Code Online (Sandbox Code Playgroud)
但使用上述代码进行测试的结果显示len()更快.为什么?
我正在寻找一种非常快速的方法来检查文件夹是否包含两个以上的文件。
我担心如果/path/len(os.listdir('/path/')) > 2中有很多文件,可能会变得非常慢,特别是因为该函数一次会被多个进程频繁调用。
我有两个排序列表,例如
a = [1, 4, 7, 8]
b = [1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
我想知道每个项目a是否在b. 对于上面的例子,我想找到
a_in_b = [True, True, False, False]
Run Code Online (Sandbox Code Playgroud)
(或具有索引其中a_in_b是True将细太)。
现在,a和b都非常大,因此复杂性是一个问题。如果M = len(a)和N = len(b)。我怎样才能以比M * O(N)利用两个列表都已排序的事实更低的复杂性来做到这一点?
可能重复:
len()函数的开销
是否len()遍历列表中的对象,然后返回自己的计数?因此给它一个O(n).
要么....
python列表是否保留了附加到它并从中删除的任何对象的计数,然后在len()调用时返回这个"count" ?因此给它O(1).
可能重复:
len()函数的开销
Python如何计算列表的长度(使用len()函数)?它是通过一个for或while 循环来做同样的事情还是有一些内部变量来存储列表的长度?
Python有许多内置函数,len()是其中之一.
返回对象的长度(项目数).参数可以是序列(例如字符串,字节,元组,列表或范围)或集合(例如字典,集合或冻结集).
如果集合和序列是对象,它们可以保存一个length可以在每次更改时更新的属性.访问此属性将是检索集合长度的快速方法.
另一种方法是迭代集合并计算动态项目的数量.
怎么len()计算长度?通过迭代或属性访问?其中一个,没有,两个,其他方法?