我在循环内创建了一个列表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
的当前长度值,每次都被覆盖。
有人可以帮我这个吗?我不知道该怎么做。
谢谢!
答案 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)