Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.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

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 - Fatal编程技术网

Python 从字符串列表在列表中创建多个列表

Python 从字符串列表在列表中创建多个列表,python,python-3.x,Python,Python 3.x,我正在尝试以以下格式构建列表列表: coordinates = [[38.768, -9.09], [[41.3092, -6.2762],[42.3092, -6.3762], [41.4092, -6.3762] ...]] 我有两个字符串列表,其中包含我想要组合的纬度和经度值(它们是对称的): 我正在使用多个循环来构建我的数据,现在我不是很有信心。我相信有更好的办法。你会怎么做?谢谢大家! 我尝试测试的多个循环无效,但如下所示: latitude = [] longitu

我正在尝试以以下格式构建列表列表:

coordinates = [[38.768, -9.09], [[41.3092, -6.2762],[42.3092, -6.3762], [41.4092, -6.3762] ...]]
我有两个字符串列表,其中包含我想要组合的纬度和经度值(它们是对称的):

我正在使用多个循环来构建我的数据,现在我不是很有信心。我相信有更好的办法。你会怎么做?谢谢大家!

我尝试测试的多个循环无效,但如下所示:

    latitude = []
    longitude = []
    processes = dict
    for lat in data['latitude']:
        latitude.append(lat.split(','))
    for lon in data['longitude']:
        longitude.append(lon.split(','))

    print(latitude)
    coordinates = []
    for i in range(len(latitude)):
        # print("Coordinate number: %d" % i)
        for x in range(len(latitude[i])):
            processes[i] = processes[i] + 'teste'
            # years_dict[line[0]].append(line[1])

有一个名为
zip
的内置函数,它将以递增的索引值连接两个列表,您可以对其进行迭代,然后将其分配给列表:

coordinates = []
zippedList = zip(map(lambda x: float(x), latitude), map(lambda x: float(x), longitude))
for [a,b] in zippedList:
    coordinates.append([a, b])

有一个名为
zip
的内置函数,它将以递增的索引值连接两个列表,您可以对其进行迭代,然后将其分配给列表:

coordinates = []
zippedList = zip(map(lambda x: float(x), latitude), map(lambda x: float(x), longitude))
for [a,b] in zippedList:
    coordinates.append([a, b])

你可以用这样的东西。用逗号分割列表中的字符串,然后在列表上迭代

latitude = ['38.768004,41.3092,41.3059,41.3025,41.2991,41.2957,41.2923,41.2888,41.2853,41.2818']
longitude = ['-9.096851,-6.2762,-6.2285,-6.1809,-6.1332,-6.0856,-6.0379,-5.9903,-5.9427,-5.8951']

latitude = latitude[0].split(',')
longitude = longitude[0].split(',')

print [[round(float(latitude[i]), 2), round(float(longitude[i]), 2)] for i, val in enumerate(latitude)]

你可以用这样的东西。用逗号分割列表中的字符串,然后在列表上迭代

latitude = ['38.768004,41.3092,41.3059,41.3025,41.2991,41.2957,41.2923,41.2888,41.2853,41.2818']
longitude = ['-9.096851,-6.2762,-6.2285,-6.1809,-6.1332,-6.0856,-6.0379,-5.9903,-5.9427,-5.8951']

latitude = latitude[0].split(',')
longitude = longitude[0].split(',')

print [[round(float(latitude[i]), 2), round(float(longitude[i]), 2)] for i, val in enumerate(latitude)]

假设您有两个字符串列表,您可以使用
zip
float
和列表理解在一行中完成:

coordinates = [(float(lat), float(lon)) for lat, lon in zip(latitude, longitude)]
另一方面,如果您的输入是带有逗号分隔值的单个字符串:

coordinates = [(float(lat), float(lon)) for lat, lon in zip(latitude[0].split(','), longitude[0].split(','))]
最后,如果您同时使用了这两种语言,则仍然可以使用一行,但会相当难以辨认。此处的
for
循环更容易阅读,因为您必须解压缩各个子字符串:

coordinates = []
for lats, lons in zip(latitude, longitude):
    coordinates.extend((float(lat), float(lon)) for lat, lon in zip(lats.split(','), lons.split(',')))
如果您感兴趣,以下是一行:

coordinates = [(float(lat), float(lon)) \
         for lat, lon in zip(lats.split(','), lons.split(',')) \
         for lats, lons in zip(latitude, longitude)]
此版本使用生成器表达式而不是列表。语法非常类似于列表理解,但不创建中间列表。使用
list.extend将项目直接放入输出中

通常,对于
循环,列表理解要比相应的
快得多,这是因为代码在引擎盖下的工作方式


另外,请注意,我将坐标对设置为元组,而不是嵌套列表。这只是我的建议。

假设您有两个字符串列表,您可以使用
zip
float
和列表理解在一行中完成:

coordinates = [(float(lat), float(lon)) for lat, lon in zip(latitude, longitude)]
另一方面,如果您的输入是带有逗号分隔值的单个字符串:

coordinates = [(float(lat), float(lon)) for lat, lon in zip(latitude[0].split(','), longitude[0].split(','))]
最后,如果您同时使用了这两种语言,则仍然可以使用一行,但会相当难以辨认。此处的
for
循环更容易阅读,因为您必须解压缩各个子字符串:

coordinates = []
for lats, lons in zip(latitude, longitude):
    coordinates.extend((float(lat), float(lon)) for lat, lon in zip(lats.split(','), lons.split(',')))
如果您感兴趣,以下是一行:

coordinates = [(float(lat), float(lon)) \
         for lat, lon in zip(lats.split(','), lons.split(',')) \
         for lats, lons in zip(latitude, longitude)]
此版本使用生成器表达式而不是列表。语法非常类似于列表理解,但不创建中间列表。使用
list.extend将项目直接放入输出中

通常,对于
循环,列表理解要比相应的
快得多,这是因为代码在引擎盖下的工作方式


另外,请注意,我将坐标对设置为元组,而不是嵌套列表。这只是我的一个建议。

你能给我们展示一些你尝试过的“多重循环”吗?你能编辑你的帖子使你的列表更短、更有效吗?有奇怪的引号。这不是有效的Python代码。请修理。@不是我附加的机器人code@AndreGarcia. 您确定输入的格式正确吗?它总是一个数字,然后是一个逗号分隔的字符串中的所有其他数字吗?你能给我们展示一些你尝试过的“多重循环”吗?你能编辑你的帖子使你的列表更短、更有效吗?有奇怪的引号。这不是有效的Python代码。请修理。@不是我附加的机器人code@AndreGarcia. 您确定输入的格式正确吗?在一个逗号分隔的字符串中,是否总是一个数字后跟所有其他数字?这不会将字符串转换为数字。我已经解决了这个问题。:)这不会将字符串转换为数字。我已修复此问题。:)不清楚OP的实际输入是什么,但是如果你的解释是正确的,那就好。不清楚OP的实际输入是什么,但是如果你的解释是正确的,那就好。