Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 3.x_List_Sublist - Fatal编程技术网

Python 比较列表元素与子列表元素

Python 比较列表元素与子列表元素,python,python-3.x,list,sublist,Python,Python 3.x,List,Sublist,我正在尝试编写一个函数,它将从列表中获取一个值,然后查看它是否在子列表中两个值的范围内。希望我的代码能更好地解释它: list1 = [1, 2, 3, 4, 5] list2 = [[1, 3], [2, 4]] answer = [] c = 0 for elem in list1: if list2[c] <= int(elem) <= list2[c+1]: answer.append(elem) sys.stdout.write(s

我正在尝试编写一个函数,它将从列表中获取一个值,然后查看它是否在子列表中两个值的范围内。希望我的代码能更好地解释它:

list1 = [1, 2, 3, 4, 5]
list2 = [[1, 3], [2, 4]]
answer = []
c = 0
for elem in list1:
    if list2[c] <= int(elem) <= list2[c+1]:
        answer.append(elem) 
        sys.stdout.write(str(answer) + ' ')
        c += 1


Expected Output: 
1 2 3
2 3 4
所以我要做的是查看list1中元素的值是否在list2中每个子列表的范围内,当然,这些值被添加到一个列表中,然后打印出来。 我收到错误消息:

Traceback (most recent call last):
  File "Task11.py", line 54, in <module>
    main()
  File "Task11.py", line 51, in main
    input_string()
  File "Task11.py", line 48, in input_string
    list_interval(input_list, query_values)
  File "Task11.py", line 16, in list_interval
    if int(list2[c]) <= int(elem) <= int(list2[c+1]):
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

我不理解,但我不确定如何以我提到的方式实际使用子列表。

使用列表理解,在列表2中指定的范围参数中查找列表1中的所有元素:


有助于创建从第一个参数(不包括最后一个参数)开始的数字范围。它还采用可选的步长参数,您可以在该参数中指定结果输出中相邻数字之间的差值。如果为空,则表示步骤为1。

预期输出可能会更清楚。首先,您提供的代码与异常中的代码不匹配。请复制粘贴您正在使用的确切代码,而不是在帖子中重新键入。其余的代码其实并不重要,例如input_函数,因为它们工作没有任何问题,只是这个函数有问题。是的,但复制粘贴您正在查看的部分仍然更好。编辑后仍然不匹配,而且,由于语法错误,这段代码实际上会阻塞for行。你获得良好帮助的机会取决于提供准确的细节。人们通常希望将您的代码复制粘贴到解释器中以再现错误,因此您需要确保它将实际运行并执行您描述的操作。
list1 = [1, 2, 3, 4, 5]
list2 = [[1, 3], [2, 4]]

lst = [[c for c in list1 if c in range(x, y+1)] for x, y in list2]

print(lst)
# [[1, 2, 3], [2, 3, 4]]