Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果列表中的某些项目相邻,则计数_Python_Python 2.7 - Fatal编程技术网

Python 如果列表中的某些项目相邻,则计数

Python 如果列表中的某些项目相邻,则计数,python,python-2.7,Python,Python 2.7,我有以下清单: a=[1,2,3,4,5,6,7,8,9,8,9,4,5,8,9] 我需要找出8,9是否彼此相邻,如果是,返回它们相邻的实例数 我最初试过 p=(any([8,9] == a[i:i+2] for i in xrange(len(a) - 1))) print p 它返回True,但我需要检索计数。如何做到这一点?这个pythonic解决方案应该为您提供答案,并为列表中唯一的元素对提供所有可能的答案 from collections import Counter zi

我有以下清单:

a=[1,2,3,4,5,6,7,8,9,8,9,4,5,8,9]
我需要找出8,9是否彼此相邻,如果是,返回它们相邻的实例数

我最初试过

p=(any([8,9] == a[i:i+2] for i in xrange(len(a) - 1)))
    print p

它返回
True
,但我需要检索计数。如何做到这一点?

这个pythonic解决方案应该为您提供答案,并为列表中唯一的元素对提供所有可能的答案

from collections import Counter
zipped = Counter(zip(a, a[1:]))
zipped[(8,9)]
使用不会给你一个计数。它只告诉您条件在给定iterable
a
中的任何位置是否为真

删除
any
,您将得到一个生成器表达式:

p=( [8,9] == a[i:i+2] for i in xrange(len(a) - 1) )
如果将该生成器表达式转换为列表,则会得到:

>>> p = list( [8,9] == a[i:i+2] for i in xrange(len(a) - 1) )
>>> print(p)
[False, False, False, False, False, False, False, True, False, True, False, False, False, True]
要获取最终计数,请调用参数为
True
count
方法
list
(您需要
True
项的计数):


或者,您可以将生成器表达式转换为列表理解,并将条件移动到for循环之后的if语句中,该循环只保留与条件匹配的项。然后,计数是列表的长度:

>>> a = [1,2,3,4,5,6,7,8,9,8,9,4,5,8,9]
>>> pairs = [True for i in xrange(len(a) - 1) if [8,9] == a[i:i+2]]
>>> pairs
[True, True, True]
>>> print(len(pairs))
3

欢迎来到堆栈溢出!看起来你想让我们为你写些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是,包括您迄今为止编写的代码、示例输入(如果有)、预期输出和实际获得的输出(控制台输出、堆栈跟踪、编译器错误——任何适用的)。您提供的详细信息越多,您可能会收到的答案就越多
>>> a = [1,2,3,4,5,6,7,8,9,8,9,4,5,8,9]
>>> pairs = [True for i in xrange(len(a) - 1) if [8,9] == a[i:i+2]]
>>> pairs
[True, True, True]
>>> print(len(pairs))
3