Làm thế nào tôi có thể thực hiện vòng lặp for() hoặc foreach() trong Python và Perl, tương ứng, chỉ in mọi chỉ mục thứ ba? Tôi cần phải di chuyển mọi chỉ mục thứ ba sang một mảng mới.Làm cách nào tôi có thể in chỉ mọi chỉ mục thứ ba trong Perl hoặc Python?
Trả lời
Python
print list[::3] # print it
newlist = list[::3] # copy it
Perl
for ($i = 0; $i < @list; $i += 3) {
print $list[$i]; # print it
push @y, $list[$i]; # copy it
}
Python:
for x in a[::3]:
something(x)
Đẹp. Python lát cho tôi cương cứng. –
http://en.wikipedia.org/wiki/Diphallia? – u0b34a0f6ae
Trong Perl:
$size = @array;
for ($i=0; $i<$size; $i+=3) # or start from $i=2, depends what you mean by "every third index"
{
print "$array[$i] ";
}
Perl 5.10 state biến mới có rất tiện dụng ở đây:
my @every_third = grep { state $n = 0; ++$n % 3 == 0 } @list;
Cũng lưu ý bạn có thể cung cấp một danh sách các yếu tố để cắt:
my @every_third = @list[ 2, 5, 8 ]; # returns 3rd, 5th & 9th items in list
Bạn có thể tự động tạo danh sách miếng này bằng map (xem Gugod của xuất sắc answer) hoặc chương trình con:
my @every_third = @list[ loop(start => 2, upto => $#list, by => 3 ) ];
sub loop {
my (%p) = @_;
my @list;
for (my $i = $p{start} || 0; $i <= $p{upto}; $i += $p{by}) {
push @list, $i;
}
return @list;
}
Cập nhật:
Về bình luận runrig của ... đây là "một trong những cách" để làm cho nó hoạt động trong vòng một vòng lặp:
my @every_third = sub { grep { state $n = 0; ++$n % 3 == 0 } @list }->();
là trạng thái tốt. Nhưng nếu bạn thực hiện dòng đó nhiều lần, nó sẽ chỉ hoạt động lần đầu tiên trừ khi độ dài danh sách là bội số của 3. – runrig
Cũng được chỉ ra. Tính năng hơi khó chịu nhưng không đáng ngạc nhiên của các biến trạng thái mà u có thể nhận được xung quanh bằng cách đóng gói trong một phụ ẩn danh (xem bản cập nhật của tôi). – draegtun
Tại sao không làm 'map {$ _ * 3} 0 .. $ MAX/3' và sử dụng nó cho chỉ mục slice của bạn? –
Perl:
Như với câu trả lời của draegtun, nhưng sử dụng số đếm var:
my $i;
my @new = grep {not ++$i % 3} @list;
Và có thể được đặt trong một khối: my @new = do {my $ i; grep {not ++ $ i% 3} @list}; – draegtun
@array = qw(1 2 3 4 5 6 7 8 9); print @array[(grep { ($_ + 1) % 3 == 0 } (1..$#array))];
Perl:
# The initial array
my @a = (1..100);
# Copy it, every 3rd elements
my @b = @a[ map { 3 * $_ } 0..$#a/3 ];
# Print it. space-delimited
$, = " ";
say @b;
Bạn có thể làm một lát trong Perl.
my @in = (1..10);
# need only 1/3 as many indexes.
my @index = 1..(@in/3);
# adjust the indexes.
$_ = 3 * $_ - 1 for @index;
# These would also work
# $_ *= 3, --$_ for @index;
# --($_ *= 3) for @index
my @out = @in[@index];
- 1. Trong Python, tôi có thể in 3 danh sách theo thứ tự theo số chỉ mục không?
- 2. Làm cách nào tôi có thể bỏ qua mọi thứ trong thư mục trong Mercurial
- 3. Làm thế nào tôi có thể in chỉ một dòng mới unix trong Perl trên Win32?
- 4. chỉ chọn li thứ ba
- 5. Cài đặt có thể lập chỉ mục yếu có thể lập chỉ mục trong Python
- 6. .htaccess ghi lại regex: khớp mọi thứ nhưng "chỉ mục"
- 7. Tôi có nên xác định chỉ mục (A) và chỉ mục (B) hoặc chỉ mục (A, B) hoặc cả hai?
- 8. Làm cách nào tôi có thể đổi tên tất cả các chỉ mục trong MySQL
- 9. làm thế nào tôi có thể sửa chữa xcode biên dịch mọi thứ mọi lúc?
- 10. Làm cách nào để biên dịch byte mọi thứ trong thư mục .emacs.d của tôi?
- 11. Làm thế nào tôi có thể tạo chỉ mục trên nvarchar (max) datatype trong sql?
- 12. Thuật ngữ thích hợp, tôi có nên nói chỉ mục hoặc chỉ mục không?
- 13. python - tìm char trong chuỗi - tôi có thể lấy tất cả các chỉ mục không?
- 14. Làm cách nào để chúng tôi có thể bảo mật tiện ích của bên thứ ba?
- 15. Làm thế nào tôi có thể trao đổi hai biến Perl mà không sử dụng thứ ba?
- 16. Nhận mọi mục thứ n trong mảng
- 17. Python: Thứ Sáu thứ ba của tháng
- 18. Tìm chỉ mục của mục thứ n trong danh sách
- 19. Làm cách nào để tôi chỉ có thể sử dụng mô-đun Perl nếu tôi sử dụng Windows?
- 20. Làm cách nào để tăng tìm kiếm dựa trên loại chỉ mục trong elasticsearch hoặc lucene?
- 21. Làm thế nào tôi có thể nhận được mọi mục thứ n từ Danh sách <T>?
- 22. Làm cách nào để mô phỏng "các lớp" trong JavaScript? (có hoặc không có thư viện của bên thứ ba)
- 23. F #: cách in danh sách đầy đủ (Console.WriteLine() chỉ in ba phần tử đầu tiên)
- 24. Làm cách nào để biết danh sách có mục thứ ba?
- 25. Làm cách nào tôi có thể tìm thấy chỉ mục mục danh sách với giá trị mục?
- 26. Làm cách nào để tôi chỉ liệt kê các thư mục trong kho lưu trữ zip bằng Python?
- 27. Làm cách nào tôi có thể lấy địa chỉ IP từ tiêu đề HTTP trong Java
- 28. Làm thế nào tôi có thể móc vào bản in của Perl?
- 29. cách chọn chỉ một mục từ máy phát (trong python)?
- 30. Làm cách nào tôi có thể chỉ định CSS @media trong một tệp dao cạo?
@friedo: Cảm ơn bạn đã sửa chữa :) – tuergeist