将变量中的循环列表的len()存储起来

时间:2017-05-02 06:23:28

标签: python list loops variables

我在循环内创建了一个列表D1十次。

此时D1始终包含731个值。 所以我10 x D1有731个值 然后,我针对所有值D1< -50过滤> +50 现在我有10个不同的列表b50,并希望将b50的长度保存在列表len_b50中。 因此,最后len_b50应包含10个描述b50长度的值,例如:

len_b50 = [643,510,451,391,274,197,128,76,55,31]

请参阅以下代码示例我尝试的内容:

for i in range(0,10):
    D1=x.tolist()

    b50=[]
    len_b50=[]
    for t in range(0,731):
        if(D1[t]>50 or D1[t]<-50):
             b50.append(D1[t])

    len_b50.append(len(b50))
    print(len_b50)

我所完成的只是一个列表,其中只包含b50的当前长度值,每次都被覆盖。
有人可以帮我这个吗?我不知道该怎么做。

谢谢!

3 个答案:

答案 0 :(得分:0)

您在每次循环迭代时为[]分配一个空列表len_b50,即在每次开始累积到b50之前清除它。

您希望在循环之外初始化len_b50[] 。这样,列表对象在循环迭代之间持续存在。

答案 1 :(得分:0)

看起来主要问题是您没有将列表D1附加到b50,而是将D1中的单个元素附加到b50 D1。此外,您不会在10次迭代中的每次迭代中都创建新的b50,因此您不应期望在阈值后的10个列表中看到不同的长度。

如果您希望D1成为10个列表的列表,并且您希望这些列表是b50的过滤版本,则根据您提供的阈值检查,此解决方案可能有助于清除事情:

首先,生成一些样本数据,在每个循环上创建一个新的随机列表 然后,过滤掉每个列表中不符合阈值标准的元素 最后,将过滤后的列表存储在len_b50中,并将其长度列表存储在import numpy as np # number of elements in array N = 731 # number of lists to make n_iter = 10 # threshold value thresh = 50 b50 = [] for i in range(n_iter): x = np.random.randint(-100,100, size=N) D1 = [value for value in x if abs(value) > abs(thresh)] b50.append(D1) len(b50) 10 中。

b50

现在在len_b50 = [len(x) for x in b50] print(len_b50) [390, 366, 363, 345, 346, 375, 350, 358, 359, 366] 中找到每个列表的长度:

<script src="http://maps.google.com/maps/api/js?key=AIzaSyDrUSGOXq4cTcc15LplHJshcnGM981dEoQ&sensor=false" type="text/javascript"></script>
        <script type="text/javascript">
            //Sample code written by August Li
            var icon = new google.maps.MarkerImage("images/placeholder.png",
                       new google.maps.Size(32, 32), new google.maps.Point(0, 0),
                       new google.maps.Point(13, 32));
            var center = null;
            var map = null;
            var currentPopup;
            var bounds = new google.maps.LatLngBounds();
            function addMarker(lat, lng, info) {
                var pt = new google.maps.LatLng(lat, lng);
                bounds.extend(pt);
                var marker = new google.maps.Marker({
                    position: pt,
                    icon: icon,
                    map: map
                });
                var popup = new google.maps.InfoWindow({
                    content: info,
                    maxWidth: 300
                });
                google.maps.event.addListener(marker, "click", function() {
                    if (currentPopup != null) {
                        currentPopup.close();
                        currentPopup = null;
                    }
                    popup.open(map, marker);
                    currentPopup = popup;
                });
                google.maps.event.addListener(popup, "closeclick", function() {
                    map.panTo(center);
                    currentPopup = null;
                });
            }           
            function initMap() {
                map = new google.maps.Map(document.getElementById("map"), {
                    center: new google.maps.LatLng(0, 0),
                    zoom: 5,
                    mapTypeId: google.maps.MapTypeId.ROADMAP,
                    mapTypeControl: false,
                    mapTypeControlOptions: {
                        style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR
                    },
                    navigationControl: true,
                    navigationControlOptions: {
                        style: google.maps.NavigationControlStyle.ZOOM_PAN
                    }
                });
<?php
$query = mysql_query("SELECT * FROM locations WHERE ClinicId=$location_id")or die(mysql_error());
while($row = mysql_fetch_array($query))
{
  $name = $row['ClinicName'];
  $lat = $row['ClinicLatitude'];
  $lon = $row['ClinicLongitude'];
  $desc = $row['ClinicAddress'];



  echo("addMarker($lat, $lon, '<b>$name</b><br />$desc');\n");

}

?>
 center = bounds.getCenter();
     map.fitBounds(bounds);

     }
     </script>

答案 2 :(得分:0)

len_b50移出for循环
也只是t循环D1

中的项目
len_b50 = []
for i in range(0, 10):
    D1 = x.tolist()

    b50 = []
    for t in D1:
        if (t > 50 or t < -50):
             b50.append(t)

    len_b50.append(len(b50))

print(len_b50)

现在你可以使用列表理解

len_b50 = []
for i in range(0, 10):
    D1 = x.tolist()

    b50 = [t for t in D1 if (t > 50 or t < -50)]
    len_b50.append(len(b50))

print(len_b50)