Python:如何遍历两个列表中的每个值,计算值为<;第1个列表中的22个或<;第二个名单上有27个?

Python:如何遍历两个列表中的每个值,计算值为<;第1个列表中的22个或<;第二个名单上有27个?,python,list,loops,count,Python,List,Loops,Count,我对如何遍历两个列表中的每个值、使用哪个循环以及如何进行循环感到困惑。请帮忙 我有两个列表(datalist\u country和datalist\u urban)。在我的主要功能中,我将每个列表分配给一个文本文件。每个列表中具有相同索引(例如23)的值指的是同一辆车在国内行驶的里程数与在城市道路上行驶的里程数 def mydatacount(datalist_country, datalist_urban): count = [] for value in datalist_

我对如何遍历两个列表中的每个值、使用哪个循环以及如何进行循环感到困惑。请帮忙

我有两个列表(
datalist\u country
datalist\u urban
)。在我的主要功能中,我将每个列表分配给一个文本文件。每个列表中具有相同索引(例如23)的值指的是同一辆车在国内行驶的里程数与在城市道路上行驶的里程数

 def mydatacount(datalist_country, datalist_urban):
    count = []
    for value in datalist_country:
        num = float(value)
        if num > 22:
            count.append(value)
    for value in datalist_urban:
        num = float(value)
        if num > 27:
            count.append(value)
    print(len(count))
我正在尝试使用某种循环(可能是
,而
将是最好的?)。我的最终目标是统计有多少辆车在乡村道路上的时速低于22英里,或者在城市道路上的时速低于27英里

 def mydatacount(datalist_country, datalist_urban):
    count = []
    for value in datalist_country:
        num = float(value)
        if num > 22:
            count.append(value)
    for value in datalist_urban:
        num = float(value)
        if num > 27:
            count.append(value)
    print(len(count))
该函数可以帮助您实现这一点。它根据需要使用尽可能多的iterables(比如list)并创建一个迭代器来提供元组,其中第n个元组包含每个列表的第n个元素,元组中的顺序与传递给函数的迭代器的顺序相同。通过这种方式,您可以一次遍历多个列表。注意,当传递的一个迭代器耗尽时,zip迭代器结束

此外,您还表示您寻找的是每加仑22或27英里以下的汽车,因此您需要检查num是否小于该值,而不是大于该值。可能是这样的:

def mydatacount(datalist_country, datalist_urban):
    count = 0
    for value_c, value_u in zip(datalist_country, datalist_urban):
        num_c = float(value_c)
        num_u = float(value_u)
        if num_c < 22 or num_u < 27:
            count += 1
    print(count)
def mydatacount(数据列表\国家/地区、数据列表\城市):
计数=0
对于值c,zip中的值(数据列表国家/地区、数据列表城市):
num_c=浮点(值_c)
num_=浮点(值_)
如果num_c<22或num_<27:
计数+=1
打印(计数)

您可以使用
zip
sum
完成此操作:

count = sum(1 for x, y in zip(datalist_country, datalist_urban) if float(x) < 22 or float(y) < 27)
count=sum(如果浮动(x)<22或浮动(y)<27,则zip中的x为1,y为y(数据列表\国家,数据列表\城市)

使用
zip
功能创建连续的里程数对,并使用过滤器(
if
表达式)在条件通过时返回1
sum
从中获取其值,并将所有生成的
1
s相加:

def mydatacount(datalist_country, datalist_urban):
    count = sum(1 for i in zip(datalist_country, datalist_urban) if float(i[0])<22 or float(i[1])<27)
    print(count)
def mydatacount(数据列表\国家/地区、数据列表\城市):

count=sum(1表示zip中的i(数据列表\国家,数据列表\城市)如果float(i[0]),这些列表是列表的列表吗?你说每个列表上的相同索引(即[23])指的是里程数,但是你在迭代,就好像它只是一个简单的字符串列表一样。发布一个数据示例。